The phase performs the following transformations on terms:
A base class for transformers that maintain outerParam values for outer parameters of constructors.
A standard phase template
List of phase names, this phase should run after
List of phase names, this phase should run after
Phase name this phase will attach itself to, not allowing any phase to come between it and the phase name declared
Phase name this phase will attach itself to, not allowing any phase to come between it and the phase name declared
This class does not change linearization
This class does not change linearization
Does given clazz define an outer field?
SubComponent are added to a HashSet and two phases are the same if they have the same name
SubComponent are added to a HashSet and two phases are the same if they have the same name
Internal flag to tell external from internal phases
Internal flag to tell external from internal phases
Create a new phase which applies transformer
Create a new phase which applies transformer
The transformer factory
The transformer factory
The phase corresponding to this subcomponent in the current compiler run
The phase corresponding to this subcomponent in the current compiler run
the name of the phase:
the name of the phase:
The following flags may be set by this phase:
The following flags may be set by this phase:
New flags defined by the phase which are not valid until immediately after it
New flags defined by the phase which are not valid until immediately after it
List of phase names, this phase should run before
List of phase names, this phase should run before
The type transformation method:
The type transformation method:
- Add an outer parameter to the formal parameters of a constructor in an inner non-trait class;
- Add a protected $outer field to an inner class which is not a trait.
-
Add an outer accessor $outer$$C to every inner class with fully qualified name C that is not an interface. The outer accessor is abstract for traits, concrete for other classes.
3a. Also add overriding accessor defs to every class that inherits mixin classes with outer accessor defs (unless the superclass already inherits the same mixin).
- Make all super accessors and modules in traits non-private, mangling their names.
- Remove protected flag from all members of traits.
Note: this transformInfo need not be reflected as the JVM reflection already elides outer pointers.
This class ...
1.0