{"id":{"repo_id":"nus","oai_identifier":"oai:scholarbank.nus.edu.sg:10635/243776"},"canonical_url":"https://search.dev.ndltd.org/etd/nus/oai:scholarbank.nus.edu.sg:10635/243776","repository":{"repo_id":"nus","name":"National University of Singapore","base_url":"https://scholarbank.nus.edu.sg/oai/request"},"display":{"title":"COMPILING AND DETECTING TYPE ERRORS IN INCOMPLETE JAVA PROGRAMS WITH GENERICS","abstract":"Incomplete programs are ubiquitous in web repositories, evolving software projects and beyond. However, they are difficult to work with as they contain references to undeclared constructs. Earlier efforts by the programming languages community have offered solutions to this problem across several programming languages, but they are not able to work with incomplete programs containing generic types and do not respect the type safety of the incomplete program. This thesis is, to our knowledge, the programming languages community's first attempt at tackling this problem: to automatically complete incomplete Java programs containing generics so they can be compiled, without making changes to them or undermining type safety. We present a novel constraint-based algorithm and an early prototype, JavaCIP, that does so by creating the declarations of classes or interfaces that the incomplete program refers to, or cites the existence of non-trivial type errors in it.","abstract_html":"Incomplete programs are ubiquitous in web repositories, evolving software projects and beyond. However, they are difficult to work with as they contain references to undeclared constructs. Earlier efforts by the programming languages community have offered solutions to this problem across several programming languages, but they are not able to work with incomplete programs containing generic types and do not respect the type safety of the incomplete program. This thesis is, to our knowledge, the programming languages community&#x27;s first attempt at tackling this problem: to automatically complete incomplete Java programs containing generics so they can be compiled, without making changes to them or undermining type safety. We present a novel constraint-based algorithm and an early prototype, JavaCIP, that does so by creating the declarations of classes or interfaces that the incomplete program refers to, or cites the existence of non-trivial type errors in it.","abstract_has_math":false,"creators":["FOO YONG QI"],"institution":null,"degree_name":null,"degree_level":null,"degree_discipline":null,"degree_department":null,"school":null,"contributors":[],"advisors":[],"committee_chairs":[],"committee_members":[],"year":2023,"date_issued":"2023-05-22","date_published":"2023-05-22","updated_at":"2026-07-24T03:33:22Z","subjects":["static analysis,generics,incomplete programs,program synthesis,type systems,Java"],"languages":[],"rights":[],"rights_urls":[],"identifier_entries":[]},"links":{"outbound_url":null,"outbound_label":null,"outbound_source":null},"metadata_groups":[{"id":"people","label":"People","entries":[{"key":"dc:creator","label":"Author","values":["FOO YONG QI"]}]},{"id":"academic_context","label":"Academic Context","entries":[{"key":"dc:date.issued","label":"Date","values":["2023-05-22"]},{"key":"dc:relation.isreferencedby","label":"Dc Relation Isreferencedby","values":["https://scholarbank.nus.edu.sg/handle/10635/243776"]},{"key":"dc:type","label":"Dc Type","values":["Thesis"]}]},{"id":"subjects_keywords","label":"Subjects and Keywords","entries":[{"key":"dc:subject","label":"Dc Subject","values":["static analysis,generics,incomplete programs,program synthesis,type systems,Java"]}]},{"id":"identifiers","label":"Identifiers","entries":[{"key":"dc:identifier.uri","label":"Identifier URI","values":["https://scholarbank.nus.edu.sg/bitstreams/21183862-6fec-4604-aef0-9168a4af64d7/download"]}]},{"id":"additional","label":"Additional Metadata","entries":[{"key":"dc:description.abstract","label":"Abstract","values":["Incomplete programs are ubiquitous in web repositories, evolving software projects and beyond. However, they are difficult to work with as they contain references to undeclared constructs. Earlier efforts by the programming languages community have offered solutions to this problem across several programming languages, but they are not able to work with incomplete programs containing generic types and do not respect the type safety of the incomplete program. This thesis is, to our knowledge, the programming languages community's first attempt at tackling this problem: to automatically complete incomplete Java programs containing generics so they can be compiled, without making changes to them or undermining type safety. We present a novel constraint-based algorithm and an early prototype, JavaCIP, that does so by creating the declarations of classes or interfaces that the incomplete program refers to, or cites the existence of non-trivial type errors in it."]},{"key":"dc:format.checksum.md5","label":"Dc Format Checksum Md5","values":["fab9d073185d00543da5916913b38052","5b7997df532d67e671409a46a907a848"]},{"key":"dc:title","label":"Title","values":["COMPILING AND DETECTING TYPE ERRORS IN INCOMPLETE JAVA PROGRAMS WITH GENERICS"]}]}],"canonical_facts":{"dc:creator":["FOO YONG QI"],"dc:date.issued":["2023-05-22"],"dc:description.abstract":["Incomplete programs are ubiquitous in web repositories, evolving software projects and beyond. However, they are difficult to work with as they contain references to undeclared constructs. Earlier efforts by the programming languages community have offered solutions to this problem across several programming languages, but they are not able to work with incomplete programs containing generic types and do not respect the type safety of the incomplete program. This thesis is, to our knowledge, the programming languages community's first attempt at tackling this problem: to automatically complete incomplete Java programs containing generics so they can be compiled, without making changes to them or undermining type safety. We present a novel constraint-based algorithm and an early prototype, JavaCIP, that does so by creating the declarations of classes or interfaces that the incomplete program refers to, or cites the existence of non-trivial type errors in it."],"dc:format.checksum.md5":["fab9d073185d00543da5916913b38052","5b7997df532d67e671409a46a907a848"],"dc:identifier.uri":["https://scholarbank.nus.edu.sg/bitstreams/21183862-6fec-4604-aef0-9168a4af64d7/download"],"dc:relation.isreferencedby":["https://scholarbank.nus.edu.sg/handle/10635/243776"],"dc:subject":["static analysis,generics,incomplete programs,program synthesis,type systems,Java"],"dc:title":["COMPILING AND DETECTING TYPE ERRORS IN INCOMPLETE JAVA PROGRAMS WITH GENERICS"],"dc:type":["Thesis"]},"updated_at":"2026-07-24T03:33:22Z"}