Type Inference for Variant Object Types

Michele Bugliesi, Santiago M. Pericás-Geertsen
2002 Information and Computation  
Existing type systems for object calculi are based on invariant subtyping. Subtyping invariance is required for soundness of static typing in the presence of method overrides, but it is often in the way of the expressive power of the type system. Flexibility of static typing can be recovered in different ways: in first-order systems by the adoption of object types with variance annotations, in second-order systems by resorting to Self types. Type inference is known to be P-complete for
more » ... r systems of finite and recursive object types, and NP-complete for a restricted version of Self types. The complexity of type inference for systems with variance annotations is yet unknown. This paper presents a new object type system based on the notion of Split types, a form of object types where every method is assigned two types, namely, an update type and a select type. The subtyping relation that arises for Split types is variant and, as a result, subtyping can be performed both in width and in depth. The new type system generalizes all the existing first-order type systems for objects, including systems based on variance annotations. Interestingly, the additional expressive power does not affect the complexity of the type inference problem, as we show by presenting an O(n 3 ) inference algorithm.
doi:10.1006/inco.2002.3091 fatcat:p44dofdyknf6hmyegml4bwdrhe