A MegaPhase combines a number of mini-phases which are all executed in a single tree traversal.
This is an evolution of the previous "TreeTransformers.scala", which was written by @DarkDimius and is described in his thesis.
The base class of tree transforms. For each kind of tree K, there are two methods which can be overridden:
prepareForK: return a new Context which gets passed to the node and its children transformK // transform node of type K
There are also prepare/transform hooks for
- Stats: to prepare/transform a statement sequence in a block, template, or package def,
- Unit : to prepare/transform a whole compilation unit
- Other: to prepape/transform a tree that does not have a specific prepare/transform method pair.