Incremental Overload Resolution in Object-Oriented Programming Languages

Tamas Szabo, Edlira Kuci, Matthijs Bijman, Mira Mezini, Sebastian Erdweg

Research output: Chapter in Book/Conference proceedings/Edited volumeConference contributionScientificpeer-review

2 Citations (Scopus)


Object-oriented programming languages feature static and dynamic overloading: Multiple methods share the same name but provide different implementations. Dynamic overloading (also know as dynamic dispatch) is resolved at run time based on the type of the receiver object. In this paper, we focus on static overloading, which is resolved at compile time based on the types of the method arguments. The challenge this paper addresses is to incrementalize static overload resolution in IDEs. IDEs resolve overloaded methods for the developer to help them discern which implementation a method call refers to. However, as the code changes, the IDE has to reconsider previously resolved method calls when they are affected by the code change. This paper clarifies when a method call is affected by a code change and how to re-resolve method calls with minimal computational effort. To this end, we explore and compare two approaches to incremental type checking: co-contextual type checking and IncA.
Original languageEnglish
Title of host publicationISSTA '18 Companion Proceedings for the ISSTA/ECOOP 2018 Workshops
Place of PublicationNew York, NY
PublisherAssociation for Computing Machinery (ACM)
Number of pages7
ISBN (Print)978-1-4503-5939-9
Publication statusPublished - 2018
EventISSTA 2018: The ACM SIGSOFT International Symposium on Software Testing and Analysis - Amsterdam, Netherlands
Duration: 16 Jul 201818 Jul 2018


ConferenceISSTA 2018
OtherColocated conferences include ECOOP and Curry On


  • Overload resolution
  • Type checking
  • Static analysis
  • Incremental computing
  • Object-oriented languages


Dive into the research topics of 'Incremental Overload Resolution in Object-Oriented Programming Languages'. Together they form a unique fingerprint.

Cite this