Checks that the Phase Consistency Principle (PCP) holds and heals types.
Local term references are phase consistent if and only if they are used at the same level as their definition.
Local type references can be used at the level of their definition or lower. If used used at a higher level, it will be healed if possible, otherwise it is inconsistent.
Type healing consists in transforming a phase inconsistent type T
into summon[Type[T]].Underlying
.
As references to types do not necessarily have an associated tree it is not always possible to replace the types directly. Instead we always generate a type alias for it and place it at the start of the surrounding quote. This also avoids duplication. For example: '{ val x: List[T] = ListT () }
is transformed to
'{ type t$1 = summon[Type[T]].Underlying val x: List[t$1] = Listt$1; () }
Attributes
- Companion
- object
- Graph
-
- Supertypes
-
trait Checkingclass TreeMapWithStagesclass TreeMapWithImplicitsclass TreeMapclass Objecttrait Matchableclass AnyShow all
Members list
Value members
Concrete methods
Attributes
- Definition Classes
Inherited methods
check that annotation annot
is applicable to symbol sym
Check arguments of compiler-defined annotations
Check that the class corresponding to this tree is either a Scala or Java annotation.
Check that the class corresponding to this tree is either a Scala or Java annotation.
Attributes
- Returns
-
The original tree or an error tree in case
tree
isn't a valid annotation or already an error tree. - Inherited from:
- Checking
Check that there is an implicit capability to throw a checked exception if the saferExceptions feature is turned on. Return that capability is it exists, EmptyTree otherwise.
Check that there is an implicit capability to throw a checked exception if the saferExceptions feature is turned on. Return that capability is it exists, EmptyTree otherwise.
Attributes
- Inherited from:
- Checking
Check that case classes are not inherited by case classes.
Check that catch can generate a good CanThrow exception
Check that tp
is a class type. Also, if traitReq
is true, check that tp
is a trait. Also, if stablePrefixReq
is true and phase is not after RefChecks, check that class prefix is stable.
Check that tp
is a class type. Also, if traitReq
is true, check that tp
is a trait. Also, if stablePrefixReq
is true and phase is not after RefChecks, check that class prefix is stable.
Attributes
- Returns
-
tp
itself if it is a class or trait ref, ObjectType if not. - Inherited from:
- Checking
Verify classes extending AnyVal meet the requirements
- Check that all case classes that extend
scala.reflect.Enum
areenum
cases - Check that parameterised
enum
cases do not extend java.lang.Enum. - Check that only a static
enum
base class can extend java.lang.Enum. - Check that user does not implement an
ordinal
method in the body of an enum class.
Attributes
- Inherited from:
- Checking
Check that all references coming from enum cases in an enum companion object are legal.
Check that all references coming from enum cases in an enum companion object are legal.
Value parameters
- cdef
-
the enum companion object class
- enumCtx
-
the context immediately enclosing the corresponding enum
Attributes
- Inherited from:
- Checking
Check that the firstParent for an enum case derives from the declaring enum class, if not, adds it as a parent after emitting an error.
Check that the firstParent for an enum case derives from the declaring enum class, if not, adds it as a parent after emitting an error.
This check will have no effect on simple enum cases as their parents are inferred by the compiler.
Attributes
- Inherited from:
- Checking
Check that tp
is a class type and that any top-level type arguments in this type are feasible, i.e. that their lower bound conforms to their upper bound. If a type argument is infeasible, issue and error and continue with upper bound.
Check that tp
is a class type and that any top-level type arguments in this type are feasible, i.e. that their lower bound conforms to their upper bound. If a type argument is infeasible, issue and error and continue with upper bound.
Attributes
- Inherited from:
- Checking
Issue a feature warning if feature is not enabled
Check that user-defined (result) type is fully applied
If sym
is an old-style implicit conversion, check that implicit conversions are enabled.
If sym
is an old-style implicit conversion, check that implicit conversions are enabled.
Attributes
- Inherited from:
- Checking
If tree
is an application of a new-style implicit conversion (using the apply method of a scala.Conversion
instance), check that the expected type is a convertible formal parameter type or that implicit conversions are enabled.
If tree
is an application of a new-style implicit conversion (using the apply method of a scala.Conversion
instance), check that the expected type is a convertible formal parameter type or that implicit conversions are enabled.
Attributes
- Inherited from:
- Checking
(1) Check that every named import selector refers to a type or value member of the qualifier type. (2) Check that no import selector is renamed more than once.
(1) Check that every named import selector refers to a type or value member of the qualifier type. (2) Check that no import selector is renamed more than once.
Attributes
- Inherited from:
- Checking
Check that we are in an inline context (inside an inline method or in inline code)
Check that we are in an inline context (inside an inline method or in inline code)
Attributes
- Inherited from:
- Checking
Check that pattern pat
is irrefutable for scrutinee type sel.tpe
. This means sel
is either marked @unchecked or sel.tpe
conforms to the pattern's type. If pattern is an UnApply, also check that the extractor is irrefutable, and do the check recursively.
Check that pattern pat
is irrefutable for scrutinee type sel.tpe
. This means sel
is either marked @unchecked or sel.tpe
conforms to the pattern's type. If pattern is an UnApply, also check that the extractor is irrefutable, and do the check recursively.
Attributes
- Inherited from:
- Checking
Check that path
is a legal prefix for an export clause
Check that path
is a legal prefix for an import clause
Attributes
- Inherited from:
- Checking
Check that all named types that form part of this type have a denotation. Called on inferred (result) types of ValDefs and DefDefs. This could fail for types where the member was originally available as part of the self type, yet is no longer visible once the this
has been replaced by some other prefix. See neg/i3083.scala
Check that all named types that form part of this type have a denotation. Called on inferred (result) types of ValDefs and DefDefs. This could fail for types where the member was originally available as part of the self type, yet is no longer visible once the this
has been replaced by some other prefix. See neg/i3083.scala
Attributes
- Inherited from:
- Checking
Check that tree does not define a context function type
Check that class does not declare same symbol twice
Check that method parameter types do not reference their own parameter or later parameters in the same parameter section.
Check that method parameter types do not reference their own parameter or later parameters in the same parameter section.
Attributes
- Inherited from:
- Checking
Check that module sym
does not clash with a class of the same name that is concurrently compiled in another source file.
Check that module sym
does not clash with a class of the same name that is concurrently compiled in another source file.
Attributes
- Inherited from:
- Checking
Check that symbol's external name does not clash with symbols defined in the same scope
Check that symbol's external name does not clash with symbols defined in the same scope
Attributes
- Inherited from:
- Checking
Attributes
- Inherited from:
- Checking
Attributes
- Inherited from:
- Checking
Attributes
- Inherited from:
- Checking
Check that all type members of tp
have realizable bounds
Check that all non-synthetic references of the form <ident>
or this.<ident>
in tree
that refer to a member of badOwner
are allowed
. Also check that there are no other explicit this
references to badOwner
.
Check that all non-synthetic references of the form <ident>
or this.<ident>
in tree
that refer to a member of badOwner
are allowed
. Also check that there are no other explicit this
references to badOwner
.
Attributes
- Inherited from:
- Checking
Check that tpt
does not define a higher-kinded type
Check that type tp
is stable.
Given a parent parent
of a class cls
, if parent
is a trait check that the superclass of cls
derived from the superclass of parent
.
Given a parent parent
of a class cls
, if parent
is a trait check that the superclass of cls
derived from the superclass of parent
.
An exception is made if cls
extends Any
, and parent
is java.io.Serializable
or java.lang.Comparable
. These two classes are treated by Scala as universal traits. E.g. the following is OK:
... extends Any with java.io.Serializable
The standard library relies on this idiom.
Attributes
- Inherited from:
- Checking
Check that tree
is a valid infix operation. That is, if the operator is alphanumeric, it must be declared infix
.
Check that tree
is a valid infix operation. That is, if the operator is alphanumeric, it must be declared infix
.
Attributes
- Inherited from:
- Checking
A hook to exclude selected symbols from double declaration check
A hook to exclude selected symbols from double declaration check
Attributes
- Inherited from:
- Checking
Attributes
- Definition Classes
- Inherited from:
- TreeMapWithPreciseStatContexts
Attributes
- Inherited from:
- TreeMap
Attributes
- Inherited from:
- TreeMap
Attributes
- Inherited from:
- TreeMapWithImplicits
Attributes
- Definition Classes
- Inherited from:
- TreeMapWithPreciseStatContexts
Attributes
- Inherited from:
- TreeMapWithPreciseStatContexts
Attributes
- Inherited from:
- TreeMap
Attributes
- Inherited from:
- TreeMap
Inherited fields
Attributes
- Inherited from:
- TreeMap