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?
Attention on veut sans doute le vrai type de self, qui est `mclass.mclass_type`. Et non pas `mbound_type` qui est la borne statique.

Par exemple pour `class A[E: Numeric]`, le `bound_mtype` est `A[Numeric]` alors que le `mclass.mclass_type` est `A[E]`

Donc écrire

~~~
mpropdef.bound = mclass.mclass_type
~~~