Refined Effects for Unanticipated Object Re-classification: Fickle3

In previous work on the language Fickle and its extension Fickle II Dezani and us introduced language features for object re-classification for imperative, typed, class-based, object-oriented languages. In this paper we present the language Fickle 3 , which on one side refines Fickle II with more expressive effect annotations, and on the other eliminates the need to declare explicitly which are the classes of the objects that may be re-classified. Therefore, Fickle 3 allows to correctly type meaningful programs which Fickle II rejects. Moreover, re-classification may be decided by the client of a class, allowing unanticipated object re-classification. As for Fickle II , also the type and effect system for Fickle 3 guarantees that, even though objects may be re-classified across classes with different members, they will never attempt to access non existing members. The type and effect system of Fickle 3 has some significant differences from the one of Fickle II . In particular, besides the fact that intra-class type checking has to track the more refined effects, when a class is combined with other classes some additional inter-class checking is introduced.

[1]  Oscar M. Nierstrasz,et al.  ECOOP’ 93 — Object-Oriented Programming , 2000, Lecture Notes in Computer Science.

[2]  Jørgen Lindskov Knudsen ECOOP 2001 — Object-Oriented Programming , 2001, Lecture Notes in Computer Science.

[3]  Pascal Costanza Dynamic Object Replacement and Implementation-Only Classes , 2001 .

[4]  Craig Chambers,et al.  Predicate Classes , 1993, ECOOP.

[5]  Sarfraz Khurshid,et al.  Is the Java Type System Sound? , 1999, Theory Pract. Object Syst..

[6]  Pierre Jouvelot,et al.  Polymorphic type, region and effect inference , 1992, Journal of Functional Programming.

[7]  Sophia Drossopoulou,et al.  Fickle : Dynamic Object Re-classification , 2001, ECOOP.

[8]  Rachid Guerraoui,et al.  ECOOP’ 99 — Object-Oriented Programming , 1999, Lecture Notes in Computer Science.

[9]  Sophia Drossopoulou,et al.  More dynamic object reclassification: Fickle∥ , 2002, TOPL.

[10]  David K. Gifford,et al.  Polymorphic effect systems , 1988, POPL '88.

[11]  Manuel Serrano,et al.  Wide Classes , 1999, ECOOP.

[12]  Davide Ancona,et al.  An Effective Translation of Fickle into Java , 2001, ICTCS.