The central class of the dotc compiler. The job of a compiler is to create
runs, which process given
phases in a given
Generate the output of the compilation
Phases dealing with the frontend up to trees ready for TASTY pickling
DenotTransformers that change the signature of their denotation's info must go after erasure. The reason is that denotations are permanently referred to by TermRefs which contain a signature. If the signature of a symbol would change, all refs to it would become outdated - they could not be dereferenced in the new phase.
After erasure, signature changing denot-transformers are OK because erasure will make sure that only term refs with fixed SymDenotations survive beyond it. This is possible because:
- splitter has run, so every ident or select refers to a unique symbol
- after erasure, asSeenFrom is the identity, so every reference has a plain SymDenotation, as opposed to a UniqueRefDenotation.
Phases dealing with TASTY tree pickling and unpickling
Phases dealing with the transformation from pickled trees to backend trees