Variant Path Types for Scalable Extensibility

Atsushi Igarashi and Mirko Viroli. In Proceedings of the ACM SIGPLAN International Conference on Object-Oriented Programming, Systems, Languages and Applications (OOPSLA 2007), pages 113-132, Montreal, QC, October 2007.

An earlier version appeared in Informal proceedings of the International Workshop on Foundations and Development of Object-Oriented Languages (FOOL/WOOD 2007), pages 38-49, Nice, France, January 2007.


Much recent work in the design of object-oriented programming languages has been focusing on identifying suitable features to support so-called scalable extensibility, where the usual extension mechanism by inheritance works in different scales of software components---that is, classes, groups of classes, groups of groups and so on. We contribute to this topic by introducing the mechanism of variant path types. They provide a flexible means to intra-group relationship (among classes) that has to be preserved through extension, and rich abstractions to express various kinds of sets of objects with flexible subtyping, by the new notions of exact and inexact qualifications. We formalize a safe type system for variant path types on top of Featherweight Java. Our development results in a lightweight solution for scalable extensibility in Java-like programming languages.