Check what the phase achieves, to be called at any point after it is finished.
Check what the phase achieves, to be called at any point after it is finished.
The sequence position of this phase in the given context where 0 is reserved for NoPhase and the first real phase is at position 1.
The sequence position of this phase in the given context where 0 is reserved for NoPhase and the first real phase is at position 1. -1 if the phase is not installed in the context.
id of this mini phase in group
id of this mini phase in group
Output should be checkable by TreeChecker
Output should be checkable by TreeChecker
Is this phase the standard typerphase? True for FrontEnd, but not for other first phases (such as FromTasty).
Is this phase the standard typerphase? True for FrontEnd, but not for other first phases (such as FromTasty). The predicate is tested in some places that perform checks and corrections. It's different from isAfterTyper (and cheaper to test).
The last phase during which the transformed denotations are valid
The last phase during which the transformed denotations are valid
Denotations with a symbol where mayChange
is false are guaranteed to be
unaffected by this transform, so transformInfo
need not be run.
Denotations with a symbol where mayChange
is false are guaranteed to be
unaffected by this transform, so transformInfo
need not be run. This
can save time, and more importantly, can help avoid forcing symbol completers.
If set, allow missing or superfluous arguments in applications and type applications.
If set, allow missing or superfluous arguments in applications and type applications.
List of names of phases that should have finished their processing of all compilation units before this phase starts
List of names of phases that should have finished their processing of all compilation units before this phase starts
List of names of phases that should have finished their processing of all compilation units before this phase starts
List of names of phases that should have finished their processing of all compilation units before this phase starts
The transformation method
The transformation method
Transform tree using all transforms of current group (including this one)
Transform tree using all transforms of current group (including this one)
Transform single node using all transforms following the current one in this group
Transform single node using all transforms following the current one in this group
Transform subtree using all transforms following the current one in this group
Transform subtree using all transforms following the current one in this group
Add outer accessors if a class always needs an outer pointer
Add outer accessors if a class always needs an outer pointer
Convert a selection of the form qual.C_<OUTER>
to an outer path from qual
to C
Convert a selection of the form qual.C_<OUTER>
to an outer path from qual
to C
First, add outer accessors if a class does not have them yet and it references an outer this.
First, add outer accessors if a class does not have them yet and it references an outer this. If the class has outer accessors, implement them. Furthermore, if a parent trait might have an outer accessor, provide an implementation for the outer accessor by computing the parent's outer from the parent type prefix. If the trait ends up not having an outer accessor after all, the implementation is redundant, but does not harm. The same logic is not done for non-trait parent classes because for them the outer pointer is passed in the super constructor, which will be implemented later in a separate phase which needs to run after erasure. However, we make sure here that the super class constructor is indeed a New, and not just a type.
Throws an UnsupportedOperationException
with the given method name.
Throws an UnsupportedOperationException
with the given method name.
The validity period of the transformer in the given context
The validity period of the transformer in the given context
This phase adds outer accessors to classes and traits that need them. Compared to Scala 2.x, it tries to minimize the set of classes that take outer accessors by scanning class implementations for outer references.
The following things are delayed until erasure and are performed by class OuterOps:
replacement of outer this by outer paths is done in Erasure. needs to run after pattern matcher as it can add outer checks and force creation of $outer