ReChecking

trait ReChecking extends Checking
trait Checking
class Object
trait Matchable
class Any
class Typer
class ReTyper
class Checker

Value members

Concrete methods

override def checkAnnotApplicable(annot: Tree, sym: Symbol)(using Context): Boolean
Definition Classes
override def checkEnum(cdef: TypeDef, cls: Symbol, firstParent: Symbol)(using Context): Unit
Definition Classes
override def checkEnumCaseRefsLegal(cdef: TypeDef, enumCtx: Context)(using Context): Unit
Definition Classes
override def checkEnumParent(cls: Symbol, firstParent: Symbol)(using Context): Unit
Definition Classes
override def checkFullyAppliedType(tree: Tree)(using Context): Unit
Definition Classes
override def checkMatchable(tp: Type, pos: SrcPos, pattern: Boolean)(using Context): Unit
Definition Classes
override def checkNoModuleClash(sym: Symbol)(using Context): Unit
Definition Classes
override def checkRefsLegal(tree: Tree, badOwner: Symbol, allowed: (Name, Symbol) => Boolean, where: String)(using Context): Unit
Definition Classes

Inherited methods

def checkAnnotArgs(tree: Tree)(using Context): tree

Check arguments of compiler-defined annotations

Check arguments of compiler-defined annotations

Inherited from
Checking
def checkCaseInheritance(parent: Symbol, caseCls: ClassSymbol, pos: SrcPos)(using Context): Unit

Check that case classes are not inherited by case classes.

Check that case classes are not inherited by case classes.

Inherited from
Checking
def checkClassType(tp: Type, pos: SrcPos, traitReq: Boolean, stablePrefixReq: Boolean)(using Context): Type

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.

Returns

tp itself if it is a class or trait ref, ObjectType if not.

Inherited from
Checking
def checkDerivedValueClass(clazz: Symbol, stats: List[Tree])(using Context): Unit

Verify classes extending AnyVal meet the requirements

Verify classes extending AnyVal meet the requirements

Inherited from
Checking
def checkFeasibleParent(tp: Type, pos: SrcPos, where: => String)(using Context): Type

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.

Inherited from
Checking
def checkFeature(name: TermName, description: => String, featureUseSite: Symbol, pos: SrcPos)(using Context): Unit

Issue a feature warning if feature is not enabled

Issue a feature warning if feature is not enabled

Inherited from
Checking

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.

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 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 implicit conversions are enabled.

Inherited from
Checking
def checkInInlineContext(what: String, pos: SrcPos)(using Context): Unit

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)

Inherited from
Checking
def checkIrrefutable(sel: Tree, pat: Tree, isPatDef: Boolean)(using Context): Boolean

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, 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, do the check recursively.

Inherited from
Checking
def checkLegalExportPath(path: Tree, selectors: List[ImportSelector])(using Context): Unit

Check that path is a legal prefix for an export clause

Check that path is a legal prefix for an export clause

Inherited from
Checking

Check that path is a legal prefix for an import clause

Check that path is a legal prefix for an import clause

Inherited from
Checking
def checkMembersOK(tp: Type, pos: SrcPos)(using Context): Type

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

Inherited from
Checking

Check that class does not declare same symbol twice

Check that class does not declare same symbol twice

Inherited from
Checking

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.

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

Inherited from
Checking
def checkNonCyclic(sym: Symbol, info: TypeBounds, reportErrors: Boolean)(using Context): Type
Inherited from
Checking
def checkNonCyclicInherited(joint: Type, parents: List[Type], decls: Scope, pos: SrcPos)(using Context): Unit
Inherited from
Checking
def checkParentCall(call: Tree, caller: ClassSymbol)(using Context): Unit
Inherited from
Checking

Check that all type members of tp have realizable bounds

Check that all type members of tp have realizable bounds

Inherited from
Checking
def checkSimpleKinded(tpt: Tree)(using Context): Tree

Check that tpt does not define a higher-kinded type

Check that tpt does not define a higher-kinded type

Inherited from
Checking
def checkStable(tp: Type, pos: SrcPos, kind: String)(using Context): Unit

Check that type tp is stable.

Check that type tp is stable.

Inherited from
Checking
def checkTraitInheritance(parent: Symbol, cls: ClassSymbol, pos: SrcPos)(using Context): Unit

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.

Inherited from
Checking
def checkValidInfix(tree: InfixOp, meth: Symbol)(using Context): Unit

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.

Inherited from
Checking

A hook to exclude selected symbols from double declaration check

A hook to exclude selected symbols from double declaration check

Inherited from
Checking