SELF type

If Object defines a virtual type SELF, redefines it automatically in all subclasses. Also checks for some conditions on the declaration of SELF: it must be public, it must not be fixed and it must be declared on Object (or not declared at all). These conditions ensures that its refinements are valid.

The error messages when trying to redefining SELF could be improved. Maybe adding a special case preventing any redef of SELF?

Should I implement this using a phase instead?
le `node` ici n'apporte rien. Un type virtuel c'est que du modèle, par besoin de fabriquer de l'AST
En fait, on a besoin de créer de l'AST que pour les choses qui rentrent pas dans le modèle, comme les corps des méthodes.

donc, virer toutes les lignes de cette partie relatives a l'AST (donc presque toutes les lignes en fait), ce qui donne:

~~~
# This class introduction inherits a SELF
# We insert an artificial property to update it
var mpropdef = new MVirtualTypeDef(self, mprop, self.location)
mpropdef.bound = mclass.mclass_type
~~~

C'est tout :)