Benutzung des TL-2 Typecheckers

Der TL-2 Typechecker ist ähnlich wie verwandte Systemkomponenten durch

erreichbar.

Benutzungsschnittstelle:

[wer mal unter die Motorhaube schauen möchte]

Eigenheiten/Bugs

Typinferenz

Der Inferencer kriegt jetzt mehr raus als der alte, vor allem den wichtigen Fall:

Dafür funktionieren Typ-Annotationen bei If's und Try's nicht mehr :

(Der Inferencer kriegt in diesem Beispiel nur Void als common supertype raus). Das fun() :Type bei allen Kontrollstrukturen ignoriert der Parser nämlich, weil bei ihnen in Zukunft gar keine Fun's sondern einfach Blöcke hinkommen. Bei "normalen" Funs wird die Typannotation aber beachtet. Lösung: mit Let-Bindung:

Es ist im Moment etwas schwierig zu erkennen, wo der Inferencer seine Hände im Spiel hatte; da gibt's hoffentlich noch bessere Fehlermeldungen.

Metaklassen

Metaklassen dürfen nicht mehr alles, sondern nur auf private Methoden ihrer Instanzen zugreifen. Leider kann man das nur sicherstellen bei Variablen, die via let instance = _new angelegt wurden. Erhält man statt dessen ein neues Objekt indirekt über eine andere Klassenmethode, z.B. ein selbstgeschriebenes new, so geht das nicht, und der Typechecker meckert.

Lösung: ???. Entweder Metaklasse umschreiben, oder aber erst mal vom Typechecken ausschließen (ignore).


Tycoon-2 Administrator / 23.07.97