Multimethods and separate static typechecking in a language with C++-like object model
Emanuele Panizzi, Bernardo Pastorelli

TL;DR
This paper describes the implementation of multimethods and static typechecking in OOLANG, a C++-like language supporting multiple inheritance, enabling separate compilation and efficient method selection.
Contribution
It introduces a two-phase multimethod typechecking approach allowing static analysis and separate compilation in an object-oriented language with C++-like features.
Findings
Multimethod implementation supports static typechecking.
Separate compilation is achieved through link-time multimethod resolution.
The approach handles multiple inheritance and polymorphism effectively.
Abstract
The goal of this paper is the description and analysis of multimethod implementation in a new object-oriented, class-based programming language called OOLANG. The implementation of the multimethod typecheck and selection, deeply analyzed in the paper, is performed in two phases in order to allow static typechecking and separate compilation of modules. The first phase is performed at compile time, while the second is executed at link time and does not require the modules' source code. OOLANG has syntax similar to C++; the main differences are the absence of pointers and the realization of polymorphism through subsumption. It adopts the C++ object model and supports multiple inheritance as well as virtual base classes. For this reason, it has been necessary to define techniques for realigning argument and return value addresses when performing multimethod invocations.
Peer Reviews
No public reviews on file for this paper yet. If you reviewed it on a platform where reviews are public (OpenReview, ICLR, NeurIPS, ICML), you can paste yours below so the community can read it here.
Videos
No videos yet. Explain this paper in a talk, walkthrough, or lecture? Add one.
Taxonomy
TopicsLogic, programming, and type systems · Advanced Software Engineering Methodologies · Model-Driven Software Engineering Techniques
