Phase that sets up everthing for capture checking.
A tree traverser that prepares a compilation unit to be capture checked. It does the following:
- For every inferred type, drop any retains annotations, add capture sets to all its parts, add refinements to class types and function types. (c.f. mapInferred)
- For explicit capturing types, expand throws aliases to the underlying (pure) function, and add some implied capture sets to curried functions (c.f. expandThrowsAlias, expandAbbreviations).
- Add capture sets to self types of classes and objects, unless the self type was written explicitly.
- Box the types of mutable variables and type arguments to methods (type arguments of types are boxed on access).
- Link the external types of val and def symbols with the inferred types based on their parameter symbols.
Attributes
- Companion
- object
- Graph
-
- Supertypes
-
trait SetupAPItrait SymTransformerclass PreRechecktrait DenotTransformerclass Phaseclass Objecttrait Matchableclass AnyShow all
- Self type
Members list
Value members
Concrete methods
Add a capture set variable or tp
if necessary. Dealias
tp
(but keep annotations and opaque types) if doing so ends up adding a capture set.
Add a capture set variable or tp
if necessary. Dealias
tp
(but keep annotations and opaque types) if doing so ends up adding a capture set.
Value parameters
- added
-
A function producing the added capture set from a set of initial elements.
- tp
-
the type to add a capture set to
Attributes
Attributes
- Definition Classes
Symbol is a term member of a class that was not capture checked The info of these symbols is made fluid.
Symbol is a term member of a class that was not capture checked The info of these symbols is made fluid.
Attributes
This property is queried before a phase is run. If it is false, the phase is skipped.
This property is queried before a phase is run. If it is false, the phase is skipped.
Attributes
- Definition Classes
Should a capture set variable be added on type tp
? Notable exceptions are:
Should a capture set variable be added on type tp
? Notable exceptions are:
- If type refers to a class which is Pure, or it is Any, it does not need a variable.
- If type is an abstract or parameter type we decide according to
instanceCanBeImpure
- If type is a capturing type that has already a capture set variable or has the universal capture set, it does not need a variable.
Attributes
Pull out an embedded capture set from a part of tp
Pull out an embedded capture set from a part of tp
Attributes
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:
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/scalac -Xprint:<phaseNameHere> sourceFile.scala
Attributes
- Definition Classes
-
PreRecheck -> Phase
Run all well formedness tests that were deferred to post check
Run all well formedness tests that were deferred to post check
Attributes
A traverser that adds knownTypes and updates symbol infos
A traverser that adds knownTypes and updates symbol infos
Attributes
Run setup on a compilation unit with given tree
.
Run setup on a compilation unit with given tree
.
Value parameters
- recheckDef
-
the function to run for completing a val or def
Attributes
The symbol transformer of this phase.
The symbol transformer of this phase.
- Resets
private
flags of parameter accessors so that we can refine them in Setup if they have non-empty capture sets. - Special handling of some symbols defined for case classes. Enabled only until recheck is finished, and provided some compilation unit is CC-enabled.
Attributes
Inherited methods
If set, implicit search is enabled
Do not run if compile progress has been cancelled
Can this transform change the base types of a type?
Can this transform change the base types of a type?
Attributes
- Definition Classes
-
PreRecheck -> Phase
- Inherited from:
- PreRecheck
Can this transform create or delete non-private members?
Can this transform change the parents of a class?
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.
Attributes
- Inherited from:
- Phase
Attributes
- Inherited from:
- Phase
True for all phases except NoPhase
Attributes
- Inherited from:
- Phase
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.
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.
Attributes
- Inherited from:
- Phase
Attributes
- Inherited from:
- Phase
Attributes
- Inherited from:
- Phase
Output should be checkable by TreeChecker
Output should be checkable by TreeChecker
Attributes
- Definition Classes
-
PreRecheck -> Phase
- Inherited from:
- PreRecheck
This property is queried when phases are first assembled. If it is false, the phase will be dropped from the set of phases to traverse.
This property is queried when phases are first assembled. If it is false, the phase will be dropped from the set of phases to traverse.
Attributes
- Inherited from:
- Phase
Is this phase the standard typerphase? True for TyperPhase, but not for other first phases (such as FromTasty or Parser). The predicate is tested in some places that perform checks and corrections. It's different from ctx.isAfterTyper (and cheaper to test).
Is this phase the standard typerphase? True for TyperPhase, but not for other first phases (such as FromTasty or Parser). The predicate is tested in some places that perform checks and corrections. It's different from ctx.isAfterTyper (and cheaper to test).
Attributes
- Inherited from:
- Phase
Attributes
- Inherited from:
- Phase
The last phase during which the transformed denotations are valid
The last phase during which the transformed denotations are valid
Attributes
- Inherited from:
- DenotTransformer
Cancellable region, if not cancelled, run the body in the context of the current compilation unit. Enrich crash messages.
Cancellable region, if not cancelled, run the body in the context of the current compilation unit. Enrich crash messages.
Attributes
- Inherited from:
- Phase
Attributes
- Inherited from:
- Phase
A hook that allows to transform the usual context passed to the function that prints a compilation unit after a phase
A hook that allows to transform the usual context passed to the function that prints a compilation unit after a phase
Attributes
- Inherited from:
- Phase
Attributes
- Inherited from:
- Phase
If set, allow missing or superfluous arguments in applications and type applications.
If set, allow missing or superfluous arguments in applications and type applications.
Attributes
- Inherited from:
- Phase
Attributes
- Inherited from:
- PreRecheck
Attributes
- Inherited from:
- Phase
Attributes
- Inherited from:
- Phase
List of names of phases that should precede this phase
Attributes
- Inherited from:
- Phase
Attributes
- Inherited from:
- Phase
Attributes
- Inherited from:
- Phase
Convert a compilation unit's tree to a string; can be overridden
skip the phase for a Java compilation unit, may depend on -Xjava-tasty
skip the phase for a Java compilation unit, may depend on -Xjava-tasty
Attributes
- Inherited from:
- Phase
for purposes of progress tracking, overridden in TyperPhase
The transformation method
Attributes
- Inherited from:
- Phase
The validity period of the transformed denotations in the given context
The validity period of the transformed denotations in the given context
Attributes
- Inherited from:
- DenotTransformer
Inherited fields
Attributes
- Inherited from:
- PreRecheck