Transform references of the form
C is a class with explicit self type and
C is not a
subclass of the owner of
C.this.asInstanceOf[S & C.this.type].m
S is the self type of
See run/i789.scala for a test case why this is needed.
Also replaces idents referring to the self type with ThisTypes.
A name given to the
Phase that can be used to debug the compiler. For
instance, it is possible to print trees after a given phase using:
$ ./bin/dotc -Xprint:<phaseNameHere> sourceFile.scala