This transform - moves initializers from body to constructor. - makes all supercalls explicit - also moves private fields that are accessed only from constructor into the constructor if possible.
The private vals that are known to be retained as class fields
The private vals whose definition comes before the current focus
All initializers for non-lazy fields should be moved into constructor. All non-abstract methods should be implemented (this is assured for constructors in this phase and for other methods in memoize).
Class members that can be eliminated if referenced only from their own constructor.
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
List of names of phases that should precede this phase
List of names of phases that should have finished their processing of all compilation units before this phase starts