class Symbol
extends DotClass with ParamInfo with Showable

A Symbol represents a Scala definition/declaration or a package.

Constructors

Symbol ( coord: Coord , id: Int )
Symbol ( sym: Symbol )
Symbol ( implicit ctx: Context )
Symbol ( sym: Symbol )
Symbol ( symbol: Symbol , ownerIfExists: Symbol , initName: Name , initFlags: FlagSet , initInfo: Type , initPrivateWithin: Symbol )
Symbol ( sym: Symbol )
Symbol ( self: Symbol )

Members

type ThisName = Nothing <: Name
val coord : Coord
val id : Int
private var lastDenot : SymDenotation

The last denotation of this symbol

The last denotation of this symbol

[+] var nextInRun : SingleDenotation

The next SingleDenotation in this run, with wrap-around from last to first.

There may be several SingleDenotations with different validity representing...

The next SingleDenotation in this run, with wrap-around from last to first.

There may be several SingleDenotations with different validity representing the same underlying definition at different phases. These are called a "flock". Flock members are generated by

[+] def & ( that: Denotation , pre: Type , safeIntersection: Boolean ) ( implicit ctx: Context ) : Denotation

Form a denotation by conjoining with denotation that.

NoDenotations are dropped. MultiDenotations are handled by merging parts with same signatures. Sin...

    Form a denotation by conjoining with denotation that.

    NoDenotations are dropped. MultiDenotations are handled by merging parts with same signatures. SingleDenotations with equal signatures are joined as follows:

    In a first step, consider only those denotations which have symbols that are accessible from prefix pre.

    If there are several such denotations, try to pick one by applying the following three precedence rules in decreasing order of priority:

    1. Prefer denotations with more specific infos.
    2. If infos are equally specific, prefer denotations with concrete symbols over denotations with abstract symbols.
    3. If infos are equally specific and symbols are equally concrete, prefer denotations with symbols defined in subclasses over denotations with symbols defined in proper superclasses.

    If there is exactly one (preferred) accessible denotation, return it.

    If there is no preferred accessible denotation, return a JointRefDenotation with one of the operand symbols (unspecified which one), and an info which is the intersection (using & or safe_& if safeIntersection is true) of the infos of the operand denotations.

    If SingleDenotations with different signatures are joined, return NoDenotation.

    [+] def accessBoundary ( base: Symbol ) ( implicit ctx: Context ) : Symbol

    The class or term symbol up to which this symbol is accessible, or RootClass if it is public. As java protected statics are otherwise completely inacce...

    The class or term symbol up to which this symbol is accessible, or RootClass if it is public. As java protected statics are otherwise completely inaccessible in scala, they are treated as public.

    def accessedFieldOrGetter ( implicit ctx: Context ) : Symbol

    The field accessed by this getter or setter, or if it does not exist, the getter

    The field accessed by this getter or setter, or if it does not exist, the getter

    def accessibleFrom ( pre: Type , superAccess: Boolean ) ( implicit ctx: Context ) : Denotation

    The denotation made up from the alternatives of this denotation that are accessible from prefix pre, or NoDenotation if no accessible alternative exist...

    The denotation made up from the alternatives of this denotation that are accessible from prefix pre, or NoDenotation if no accessible alternative exists.

    def accessorNamed ( name: TermName ) ( implicit ctx: Context ) : Symbol
    def addAnnotation ( annot: Annotation ) : Unit

    Add given annotation to the annotations of this denotation

    Add given annotation to the annotations of this denotation

    def addAnnotations ( annots: TraversableOnce [ Annotation ] ) ( implicit ctx: Context ) : Unit

    Add all given annotations to this symbol

    Add all given annotations to this symbol

    def allOverriddenSymbols ( implicit ctx: Context ) : Iterator [ Symbol ]

    All symbols overriden by this denotation.

    All symbols overriden by this denotation.

    def alternatives : List [ SingleDenotation ]

    The set of alternative single-denotations making up this denotation

    The set of alternative single-denotations making up this denotation

    def altsWith ( p: Symbol => Boolean ) : List [ SingleDenotation ]

    The alternatives of this denotation that satisfy the predicate p.

    The alternatives of this denotation that satisfy the predicate p.

    def annotations ( implicit ctx: Context ) : List [ Annotation ]

    The annotations of this denotation

    The annotations of this denotation

    def annotationsCarrying ( meta: ClassSymbol ) ( implicit ctx: Context ) : List [ Annotation ]
    def annotations_= ( annots: List [ Annotation ] ) : Unit

    Update the annotations of this denotation

    Update the annotations of this denotation

    final def asClass : ClassSymbol
    def asClass : ClassDenotation

    Cast to class denotation

    Cast to class denotation

    def asSeenFrom ( pre: Type ) ( implicit ctx: Context ) : AsSeenFromResult

    The denotation with info(s) as seen from prefix type

    The denotation with info(s) as seen from prefix type

    def asSingleDenotation : SingleDenotation
    def asSymDenotation : SymDenotation
    final def asTerm ( implicit ctx: Context ) : TermSymbol
    final def asType ( implicit ctx: Context ) : TypeSymbol
    def assertNoSkolems ( tp: Type ) : Unit
    def associatedFile ( implicit ctx: Context ) : AbstractFile

    The source or class file from which this class or the class containing this symbol was generated, null if not applicable. Overridden in ClassSymbol

    The source or class file from which this class or the class containing this symbol was generated, null if not applicable. Overridden in ClassSymbol

    def atSignature ( sig: Signature , site: Type , relaxed: Boolean ) ( implicit ctx: Context ) : SingleDenotation

    Resolve overloaded denotation to pick the ones with the given signature when seen from prefix site.

    Resolve overloaded denotation to pick the ones with the given signature when seen from prefix site.

    final def binaryFile ( implicit ctx: Context ) : AbstractFile

    The class file from which this class was generated, null if not applicable.

    The class file from which this class was generated, null if not applicable.

    def canMatchInheritedSymbols ( implicit ctx: Context ) : Boolean

    If false, this symbol cannot possibly participate in an override, either as overrider or overridee.

    If false, this symbol cannot possibly participate in an override, either as overrider or overridee.

    def caseAccessors ( implicit ctx: Context ) : List [ Symbol ]
    def checkUnique ( implicit ctx: Context ) : SingleDenotation

    If this is a SingleDenotation, return it, otherwise throw a TypeError

    If this is a SingleDenotation, return it, otherwise throw a TypeError

    def clone ( ) : Object
    [+] def companionClass ( implicit ctx: Context ) : Symbol

    The class with the same (type-) name as this module or module class, and which is also defined in the same scope and compilation unit. NoSymbol if this...

    The class with the same (type-) name as this module or module class, and which is also defined in the same scope and compilation unit. NoSymbol if this class does not exist.

    [+] def companionModule ( implicit ctx: Context ) : Symbol

    The module object with the same (term-) name as this class or module class, and which is also defined in the same scope and compilation unit. NoSymbol i...

    The module object with the same (term-) name as this class or module class, and which is also defined in the same scope and compilation unit. NoSymbol if this module does not exist.

    def completer : LazyType

    The completer of this denotation. @pre: Denotation is not yet completed

    The completer of this denotation. @pre: Denotation is not yet completed

    def computeAsSeenFrom ( pre: Type ) ( implicit ctx: Context ) : SingleDenotation
    def containsSym ( sym: Symbol ) : Boolean

    Group contains a denotation that refers to given symbol

    Group contains a denotation that refers to given symbol

    def copy ( owner: Symbol , name: N , flags: FlagSet , info: Type , privateWithin: Symbol , coord: Coord , associatedFile: AbstractFile ) : Symbol

    Copy a symbol, overriding selective fields

    Copy a symbol, overriding selective fields

    def copySymDenotation ( symbol: Symbol , owner: Symbol , name: Name , initFlags: FlagSet , info: Type , privateWithin: Symbol , annotations: List [ Annotation ] ) ( implicit ctx: Context ) : SymDenotation

    Copy this denotation, overriding selective fields

    Copy this denotation, overriding selective fields

    def coveredInterval ( implicit ctx: Context ) : Period

    The period (interval of phases) for which there exists a valid denotation in this flock.

    The period (interval of phases) for which there exists a valid denotation in this flock.

    [+] def current ( implicit ctx: Context ) : SingleDenotation

    Produce a denotation that is valid for the given context. Usually called when !(validFor contains ctx.period) (even though this is not a precondition). I...

    Produce a denotation that is valid for the given context. Usually called when !(validFor contains ctx.period) (even though this is not a precondition). If the runId of the context is the same as runId of this denotation, the right flock member is located, or, if it does not exist yet, created by invoking a transformer (@See Transformers). If the runId's differ, but this denotation is a SymDenotation and its toplevel owner class or module is still a member of its enclosing package, then the whole flock is brought forward to be valid in the new runId. Otherwise the symbol is stale, which constitutes an internal error.

    [+] def currentPackageDecls ( implicit ctx: Context ) : MutableScope

    If this is a package class, the symbols entered in it before it is completed. (this is needed to eagerly enter synthetic aliases such as AnyRef into a p...

    If this is a package class, the symbols entered in it before it is completed. (this is needed to eagerly enter synthetic aliases such as AnyRef into a package class without forcing it. Right now, the only usage is for the AnyRef alias in Definitions.

    def debugString : String
    def defRunId : RunId
    def definedPeriodsString : String
    final def denot ( implicit ctx: Context ) : SymDenotation

    The current denotation of this symbol

    The current denotation of this symbol

    def denot_= ( d: SymDenotation ) : Unit

    Set the denotation of this symbol

    Set the denotation of this symbol

    def deprecationMessage ( implicit ctx: Context ) : Option [ String ]
    def derivedSingleDenotation ( symbol: Symbol , info: Type ) ( implicit ctx: Context ) : SingleDenotation
    def derivesFrom ( base: Symbol ) ( implicit ctx: Context ) : Boolean

    Is this a subclass of base, and is the denoting symbol also different from Null or Nothing?

    Is this a subclass of base, and is the denoting symbol also different from Null or Nothing?

    def directlyInheritedTraits ( implicit ctx: Context ) : List [ ClassSymbol ]

    All traits implemented by a class or trait except for those inherited through the superclass.

    All traits implemented by a class or trait except for those inherited through the superclass.

    [+] def disambiguate ( p: Symbol => Boolean ) ( implicit ctx: Context ) : SingleDenotation

    If this denotation is overloaded, filter with given predicate. If result is still overloaded throw a TypeError. Note: disambiguate is slightly different...

    If this denotation is overloaded, filter with given predicate. If result is still overloaded throw a TypeError. Note: disambiguate is slightly different from suchThat in that single-denotations that do not satisfy the predicate are left alone (whereas suchThat would map them to NoDenotation).

    [+] def effectiveName ( implicit ctx: Context ) : Name

    The name, except - if this is a module class, strip the module class suffix - if this is a companion object with a clash-avoiding name, strip the "avoid...

    The name, except - if this is a module class, strip the module class suffix - if this is a companion object with a clash-avoiding name, strip the "avoid clash" suffix

    def effectiveOwner ( implicit ctx: Context ) : Symbol

    The owner, skipping package objects, labels and non-lazy valdefs.

    The owner, skipping package objects, labels and non-lazy valdefs.

    [+] def enclosingClass ( implicit ctx: Context ) : Symbol

    The class containing this denotation. If this denotation is already a class, return itself Definitions flagged with InSuperCall are treated specially. Th...

    The class containing this denotation. If this denotation is already a class, return itself Definitions flagged with InSuperCall are treated specially. Their enclosing class is not the lexically enclosing class, but in turn the enclosing class of the latter. This reflects the context created by Context#superCallContext, Context#thisCallArgContext for these definitions.

    Note, that as packages have ClassSymbols, top level classes will have an enclosingClass with Package flag set.

    def enclosingClassNamed ( name: Name ) ( implicit ctx: Context ) : Symbol

    The class containing this denotation which has the given effective name.

    The class containing this denotation which has the given effective name.

    def enclosingMethod ( implicit ctx: Context ) : Symbol

    The closest enclosing method containing this definition. A local dummy owner is mapped to the primary constructor of the class.

    The closest enclosing method containing this definition. A local dummy owner is mapped to the primary constructor of the class.

    @tailrec def enclosingMethodOrClass ( implicit ctx: Context ) : Symbol

    The closest enclosing method or class of this symbol

    The closest enclosing method or class of this symbol

    def enclosingPackageClass ( implicit ctx: Context ) : Symbol

    The package class containing this denotation

    The package class containing this denotation

    def enclosingSubClass ( implicit ctx: Context ) : Symbol

    The class that encloses the owner of the current context and that is a subclass of this class. NoSymbol if no such class exists.

    The class that encloses the owner of the current context and that is a subclass of this class. NoSymbol if no such class exists.

    def enclosure ( implicit ctx: Context ) : Symbol

    The closest properly enclosing method or class of this symbol.

    The closest properly enclosing method or class of this symbol.

    def ensureCompleted ( ) ( implicit ctx: Context ) : Unit

    Make sure this denotation is completed

    Make sure this denotation is completed

    def ensureNotPrivate ( implicit ctx: Context ) : SymDenotation

    If denotation is private, remove the Private flag and expand the name if necessary

    If denotation is private, remove the Private flag and expand the name if necessary

    final def entered ( implicit ctx: Context ) : Symbol

    This symbol entered into owner's scope (owner must be a class).

    This symbol entered into owner's scope (owner must be a class).

    [+] def enteredAfter ( phase: DenotTransformer ) ( implicit ctx: Context ) : Symbol

    Enter this symbol in its class owner after given phase. Create a fresh denotation for its owner class if the class has not yet already one that starts b...

    Enter this symbol in its class owner after given phase. Create a fresh denotation for its owner class if the class has not yet already one that starts being valid after phase.

    def eq ( x$0: Object ) : Boolean
    def exists : Boolean

    Is this denotation different from NoDenotation or an ErrorDenotation?

    Is this denotation different from NoDenotation or an ErrorDenotation?

    def expandedName ( implicit ctx: Context ) : Name

    The expanded name of this denotation.

    The expanded name of this denotation.

    def extendedOverriddenSymbols ( implicit ctx: Context ) : Iterator [ Symbol ]

    Returns all matching symbols defined in parents of the selftype.

    Returns all matching symbols defined in parents of the selftype.

    def fallbackToText ( printer: Printer ) : Text

    A fallback text representation, if the pattern matching in Printers does not have a case for this showable element

    A fallback text representation, if the pattern matching in Printers does not have a case for this showable element

    def field ( implicit ctx: Context ) : Symbol
    def filter ( p: Symbol => Boolean ) : Symbol

    If this symbol satisfies predicate p this symbol, otherwise NoSymbol

    If this symbol satisfies predicate p this symbol, otherwise NoSymbol

    def filterAnnotations ( p: Annotation => Boolean ) ( implicit ctx: Context ) : Unit

    Keep only those annotations that satisfy p

    Keep only those annotations that satisfy p

    def filterDisjoint ( denots: PreDenotation ) ( implicit ctx: Context ) : SingleDenotation

    Keep only those denotations in this group which have a signature that's not already defined by denots.

    Keep only those denotations in this group which have a signature that's not already defined by denots.

    def filterExcluded ( excluded: FlagSet ) ( implicit ctx: Context ) : SingleDenotation

    Keep only those denotations in this group whose flags do not intersect with excluded.

    Keep only those denotations in this group whose flags do not intersect with excluded.

    def filterWithPredicate ( p: SingleDenotation => Boolean ) : SingleDenotation

    Keep only those denotations in this group which satisfy predicate p.

    Keep only those denotations in this group which satisfy predicate p.

    def finalize ( ) : Unit
    [+] def findMember ( name: Name , pre: Type , excluded: FlagSet ) ( implicit ctx: Context ) : Denotation

    Find member of this denotation with given name and produce a denotation that contains the type of the member as seen from given prefix pre. Exclude all...

    Find member of this denotation with given name and produce a denotation that contains the type of the member as seen from given prefix pre. Exclude all members that have flags in excluded from consideration.

    def first : Denotation

    First/last denotation in the group

    First/last denotation in the group

    def flags ( implicit ctx: Context ) : FlagSet

    The flag set

    The flag set

    def flagsUNSAFE : FlagSet

    The flag set without forcing symbol completion. Should be used only for printing.

    The flag set without forcing symbol completion. Should be used only for printing.

    def flags_= ( flags: FlagSet ) : Unit

    Update the flag set

    Update the flag set

    def flatName ( implicit ctx: Context ) : Name

    The encoded flat name of this denotation, where joined names are separated by separator characters.

    The encoded flat name of this denotation, where joined names are separated by separator characters.

    def fullName ( implicit ctx: Context ) : Name

    fullName where `.' is the separator character

    fullName where `.' is the separator character

    [+] def fullNameSeparated ( kind: QualifiedNameKind ) ( implicit ctx: Context ) : Name

    The encoded full path name of this denotation, where outer names and inner names are separated by separator strings. Never translates expansions of oper...

    The encoded full path name of this denotation, where outer names and inner names are separated by separator strings. Never translates expansions of operators back to operator symbol. Drops package objects. Represents each term in the owner chain by a simple ~. (Note: scalac uses nothing to represent terms, which can cause name clashes between same-named definitions in different enclosing methods. Before this commit we used `$' but this can cause ambiguities with the class separator '$'). A separator "" means "flat name"; the real separator in this case is "$" and enclosing packages do not form part of the name.

    def getAnnotation ( cls: Symbol ) ( implicit ctx: Context ) : Option [ Annotation ]

    Optionally, the annotation matching the given class symbol

    Optionally, the annotation matching the given class symbol

    def getter ( implicit ctx: Context ) : Symbol
    def hasAltWith ( p: SingleDenotation => Boolean ) : Boolean

    Does this denotation have an alternative that satisfies the predicate p?

    Does this denotation have an alternative that satisfies the predicate p?

    def hasAnnotation ( cls: Symbol ) ( implicit ctx: Context ) : Boolean

    Does this denotation have an annotation matching the given class symbol?

    Does this denotation have an annotation matching the given class symbol?

    def hasDefaultParams ( implicit ctx: Context ) : Boolean

    Does this symbol have defined or inherited default parameters?

    Does this symbol have defined or inherited default parameters?

    def hasSkolems ( tp: Type ) : Boolean
    def hasUniqueSym : Boolean
    override def hashCode ( ) : Int
    def history : List [ SingleDenotation ]
    def implClass ( implicit ctx: Context ) : Symbol
    def info ( implicit ctx: Context ) : Type

    The type info. The info is an instance of TypeType iff this is a type denotation Uncompleted denotations set myInfo to a LazyType.

    The type info. The info is an instance of TypeType iff this is a type denotation Uncompleted denotations set myInfo to a LazyType.

    def infoOrCompleter : Type

    The type info, or, if symbol is not yet completed, the completer

    The type info, or, if symbol is not yet completed, the completer

    def info_= ( tp: Type ) : Unit
    def initial : SymDenotation

    The version of this SingleDenotation that was valid in the first phase of this run.

    The version of this SingleDenotation that was valid in the first phase of this run.

    final def initialDenot ( implicit ctx: Context ) : SymDenotation

    The initial denotation of this symbol, without going through current

    The initial denotation of this symbol, without going through current

    def installAfter ( phase: DenotTransformer ) ( implicit ctx: Context ) : Unit

    Install this denotation as the result of the given denotation transformer.

    Install this denotation as the result of the given denotation transformer.

    def invalidateInheritedInfo ( ) : Unit

    Invalidate all caches and fields that depend on base classes and their contents

    Invalidate all caches and fields that depend on base classes and their contents

    def is ( fs: FlagSet , butNot: FlagSet ) ( implicit ctx: Context ) : Boolean

    Has this denotation one of the flags in fs set, whereas none of the flags in butNot are set?

    Has this denotation one of the flags in fs set, whereas none of the flags in butNot are set?

    def is ( fs: FlagConjunction , butNot: FlagSet ) ( implicit ctx: Context ) : Boolean

    Has this denotation all of the flags in fs set, whereas none of the flags in butNot are set?

    Has this denotation all of the flags in fs set, whereas none of the flags in butNot are set?

    def is ( fs: FlagSet ) ( implicit ctx: Context ) : Boolean

    Has this denotation one of the flags in fs set?

    Has this denotation one of the flags in fs set?

    def is ( fs: FlagConjunction ) ( implicit ctx: Context ) : Boolean

    Has this denotation all of the flags in fs set?

    Has this denotation all of the flags in fs set?

    def isAbsent ( implicit ctx: Context ) : Boolean

    Is symbol known to not exist?

    Is symbol known to not exist?

    def isAbstractOrAliasType : Boolean

    Is this symbol an abstract or alias type?

    Is this symbol an abstract or alias type?

    def isAbstractType ( implicit ctx: Context ) : Boolean

    Is this symbol an abstract type?

    Is this symbol an abstract type?

    def isAccessibleFrom ( pre: Type , superAccess: Boolean , whyNot: StringBuffer ) ( implicit ctx: Context ) : Boolean

    Is this definition accessible as a member of tree with type pre?

    Is this definition accessible as a member of tree with type pre?

    def isAliasPreferred ( implicit ctx: Context ) : Boolean
    def isAliasType ( implicit ctx: Context ) : Boolean

    Is this symbol an alias type?

    Is this symbol an alias type?

    def isAnonymousClass ( implicit ctx: Context ) : Boolean

    Is this symbol an anonymous class?

    Is this symbol an anonymous class?

    def isAnonymousFunction ( implicit ctx: Context ) : Boolean
    def isAnonymousModuleVal ( implicit ctx: Context ) : Boolean
    def isAnyOverride ( implicit ctx: Context ) : Boolean
    def isAsConcrete ( that: Symbol ) ( implicit ctx: Context ) : Boolean

    Is this symbol concrete, or that symbol deferred?

    Is this symbol concrete, or that symbol deferred?

    final def isClass : Boolean
    def isClass : Boolean

    Is this denotation a class?

    Is this denotation a class?

    def isClassConstructor : Boolean

    is this the constructor of a class?

    is this the constructor of a class?

    def isCoDefinedWith ( that: Symbol ) ( implicit ctx: Context ) : Boolean

    Is this denotation defined in the same scope and compilation unit as that symbol?

    Is this denotation defined in the same scope and compilation unit as that symbol?

    [+] def isCompanionMethod ( implicit ctx: Context ) : Boolean

    Is this a companion class method or companion object method? These methods are generated by Symbols#synthesizeCompanionMethod and used in SymDenotations...

    Is this a companion class method or companion object method? These methods are generated by Symbols#synthesizeCompanionMethod and used in SymDenotations#companionClass and SymDenotations#companionModule .

    def isCompleted : Boolean

    The denotation is completed: info is not a lazy type and attributes have defined values

    The denotation is completed: info is not a lazy type and attributes have defined values

    def isCompleting : Boolean

    The denotation is in train of being completed

    The denotation is in train of being completed

    def isConstructor : Boolean

    Is this the constructor of a trait or a class

    Is this the constructor of a trait or a class

    def isContainedIn ( boundary: Symbol ) ( implicit ctx: Context ) : Boolean

    Is this definition contained in boundary? Same as ownersIterator contains boundary but more efficient.

    Is this definition contained in boundary? Same as ownersIterator contains boundary but more efficient.

    final def isDefinedInCurrentRun ( implicit ctx: Context ) : Boolean

    Does this symbol come from a currently compiled source file?

    Does this symbol come from a currently compiled source file?

    def isDeprecated ( implicit ctx: Context ) : Boolean
    def isEffectiveRoot ( implicit ctx: Context ) : Boolean

    Is this symbol the empty package class or its companion object?

    Is this symbol the empty package class or its companion object?

    def isEffectivelyFinal ( implicit ctx: Context ) : Boolean

    A symbol is effectively final if it cannot be overridden in a subclass

    A symbol is effectively final if it cannot be overridden in a subclass

    def isEmptyPackage ( implicit ctx: Context ) : Boolean

    Is this symbol the empty package class or its companion object?

    Is this symbol the empty package class or its companion object?

    def isError : Boolean

    is this symbol the result of an erroneous definition?

    is this symbol the result of an erroneous definition?

    def isField ( implicit ctx: Context ) : Boolean
    final def isFresh ( implicit ctx: Context ) : Boolean
    def isGetter ( implicit ctx: Context ) : Boolean

    Is this a getter?

    Is this a getter?

    def isImplClassConstructor : Boolean

    Is this the constructor of a trait?

    Is this the constructor of a trait?

    def isImport : Boolean

    is this a symbol representing an import?

    is this a symbol representing an import?

    [+] @tailrec def isIncompleteIn ( base: Symbol ) ( implicit ctx: Context ) : Boolean

    A member of class base is incomplete if (1) it is declared deferred or (2) it is abstract override and its super symbol in base is nonexistent or incompl...

    A member of class base is incomplete if (1) it is declared deferred or (2) it is abstract override and its super symbol in base is nonexistent or incomplete.

    def isInlineMethod ( implicit ctx: Context ) : Boolean
    def isLinkedWith ( sym: Symbol ) ( implicit ctx: Context ) : Boolean

    Is this symbol the same or a linked class of sym?

    Is this symbol the same or a linked class of sym?

    def isLocalDummy : Boolean

    Is this a local template dummmy?

    Is this a local template dummmy?

    def isNullableClass ( implicit ctx: Context ) : Boolean

    Is this symbol a class references to which that are supertypes of null?

    Is this symbol a class references to which that are supertypes of null?

    def isNumericValueClass ( implicit ctx: Context ) : Boolean

    Is symbol a primitive numeric value class?

    Is symbol a primitive numeric value class?

    def isOverloaded : Boolean

    Is this denotation overloaded?

    Is this denotation overloaded?

    def isPackageObject ( implicit ctx: Context ) : Boolean

    Is this symbol a package object or its module class?

    Is this symbol a package object or its module class?

    def isPhantomClass ( implicit ctx: Context ) : Boolean

    Is symbol a phantom class for which no runtime representation exists?

    Is symbol a phantom class for which no runtime representation exists?

    def isPrimaryConstructor ( implicit ctx: Context ) : Boolean

    Does this symbol denote the primary constructor of its enclosing class?

    Does this symbol denote the primary constructor of its enclosing class?

    def isPrimitiveValueClass ( implicit ctx: Context ) : Boolean

    Is symbol a primitive value class?

    Is symbol a primitive value class?

    def isProperlyContainedIn ( boundary: Symbol ) ( implicit ctx: Context ) : Boolean
    def isRealClass ( implicit ctx: Context ) : Boolean

    Is this denotation a non-trait class?

    Is this denotation a non-trait class?

    def isRealMethod ( implicit ctx: Context ) : Boolean

    Is this a "real" method? A real method is a method which is: - not an accessor - not a label - not an anonymous function - not a companion method

    Is this a "real" method? A real method is a method which is: - not an accessor - not a label - not an anonymous function - not a companion method

    [+] def isRefinementClass ( implicit ctx: Context ) : Boolean

    Is this symbol a class representing a refinement? These classes are used only temporarily in Typer and Unpickler as an intermediate step for creating Re...

    Is this symbol a class representing a refinement? These classes are used only temporarily in Typer and Unpickler as an intermediate step for creating Refinement types.

    def isRoot : Boolean

    Is this symbol the root class or its companion object?

    Is this symbol the root class or its companion object?

    [+] def isSelfSym ( implicit ctx: Context ) : Boolean

    Is this the denotation of a self symbol of some class? This is the case if one of two conditions holds: 1. It is the symbol referred to in the selfInfo...

    Is this the denotation of a self symbol of some class? This is the case if one of two conditions holds: 1. It is the symbol referred to in the selfInfo part of the ClassInfo which is the type of this symbol's owner. 2. This symbol is owned by a class, it's selfInfo field refers to a type (indicating the self definition does not introduce a name), and the symbol's name is "_". TODO: Find a more robust way to characterize self symbols, maybe by spending a Flag on them?

    def isSetter ( implicit ctx: Context ) : Boolean

    Is this a setter?

    Is this a setter?

    def isSkolem : Boolean
    def isStable ( implicit ctx: Context ) : Boolean

    Is this a denotation of a stable term (or an arbitrary type)?

    Is this a denotation of a stable term (or an arbitrary type)?

    final def isStatic ( implicit ctx: Context ) : Boolean

    Special cased here, because it may be used on naked symbols in substituters

    Special cased here, because it may be used on naked symbols in substituters

    def isStatic ( implicit ctx: Context ) : Boolean

    Is this denotation static (i.e. with no outer instance)?

    Is this denotation static (i.e. with no outer instance)?

    def isStaticConstructor ( implicit ctx: Context ) : Boolean

    Does this symbol denote the static constructor of its enclosing class?

    Does this symbol denote the static constructor of its enclosing class?

    def isStaticOwner ( implicit ctx: Context ) : Boolean

    Is this a package class or module class that defines static symbols?

    Is this a package class or module class that defines static symbols?

    def isSubClass ( base: Symbol ) ( implicit ctx: Context ) : Boolean

    Is this a subclass of the given class base?

    Is this a subclass of the given class base?

    def isSuperAccessor ( implicit ctx: Context ) : Boolean
    final def isTerm ( implicit ctx: Context ) : Boolean

    Subclass tests and casts

    Subclass tests and casts

    def isTerm : Boolean

    Is this a reference to a term symbol?

    Is this a reference to a term symbol?

    final def isType ( implicit ctx: Context ) : Boolean
    def isType : Boolean

    Is this denotation a type?

    Is this denotation a type?

    def isTypeParam ( implicit ctx: Context ) : Boolean

    Is this the info of a type parameter? Will return false for symbols that are not type parameters.

    Is this the info of a type parameter? Will return false for symbols that are not type parameters.

    def isTypeTestOrCast ( implicit ctx: Context ) : Boolean
    def isValueClass ( implicit ctx: Context ) : Boolean

    Is this symbol a class that extends AnyVal?

    Is this symbol a class that extends AnyVal?

    [+] def isValueClassConvertMethod ( implicit ctx: Context ) : Boolean

    Is this a syntetic method that represents conversions between representations of a value class These methods are generated in ExtensionMethods and used...

    Is this a syntetic method that represents conversions between representations of a value class These methods are generated in ExtensionMethods and used in ElimErasedValueType.

    def isVolatile ( implicit ctx: Context ) : Boolean
    def isWeakOwner ( implicit ctx: Context ) : Boolean

    Symbol is an owner that would be skipped by effectiveOwner. Skipped are - package objects - labels - non-lazy valdefs

    Symbol is an owner that would be skipped by effectiveOwner. Skipped are - package objects - labels - non-lazy valdefs

    def last : Denotation
    def lexicallyEnclosingClass ( implicit ctx: Context ) : Symbol

    A class that in source code would be lexically enclosing

    A class that in source code would be lexically enclosing

    def linkedClass ( implicit ctx: Context ) : Symbol

    If this is a class, the module class of its companion object. If this is a module class, its companion class. NoSymbol otherwise.

    If this is a class, the module class of its companion object. If this is a module class, its companion class. NoSymbol otherwise.

    def mapInfo ( f: Type => Type ) ( implicit ctx: Context ) : SingleDenotation

    A denotation with the info of this denotation transformed using f

    A denotation with the info of this denotation transformed using f

    [+] def mapInherited ( ownDenots: PreDenotation , prevDenots: PreDenotation , pre: Type ) ( implicit ctx: Context ) : SingleDenotation

    Keep only those inherited members M of this predenotation for which the following is true - M is not marked Private - If M has a unique symbol, it does...

    Keep only those inherited members M of this predenotation for which the following is true - M is not marked Private - If M has a unique symbol, it does not appear in prevDenots. - M's signature as seen from prefix pre does not appear in ownDenots Return the denotation as seen from pre. Called from SymDenotations.computeMember. There, ownDenots are the denotations found in the base class, which shadow any inherited denotations with the same signature. prevDenots are the denotations that are defined in the class or inherited from a base type which comes earlier in the linearization.

    def markAbsent ( ) : Unit

    Make denotation not exist

    Make denotation not exist

    def matches ( other: SingleDenotation ) ( implicit ctx: Context ) : Boolean

    Group contains a denotation with given signature

    Group contains a denotation with given signature

    def matchingDecl ( inClass: Symbol , site: Type ) ( implicit ctx: Context ) : Symbol

    The non-private symbol whose name and type matches the type of this symbol in the given class.

    The non-private symbol whose name and type matches the type of this symbol in the given class.

    def matchingDenotation ( site: Type , targetType: Type ) ( implicit ctx: Context ) : SingleDenotation

    The alternative of this denotation that has a type matching targetType when seen as a member of type site, NoDenotation if none exists.

    The alternative of this denotation that has a type matching targetType when seen as a member of type site, NoDenotation if none exists.

    def matchingMember ( site: Type ) ( implicit ctx: Context ) : Symbol

    The non-private member of site whose name and type matches the type of this symbol

    The non-private member of site whose name and type matches the type of this symbol

    def maybeOwner : Symbol

    Same as owner, except returns NoSymbol for NoSymbol

    Same as owner, except returns NoSymbol for NoSymbol

    def memberCanMatchInheritedSymbols ( implicit ctx: Context ) : Boolean

    If false, this class member cannot possibly participate in an override, either as overrider or overridee.

    If false, this class member cannot possibly participate in an override, either as overrider or overridee.

    def membersNeedAsSeenFrom ( pre: Type ) ( implicit ctx: Context ) : Boolean

    Do members of this symbol need translation via asSeenFrom when accessed via prefix pre?

    Do members of this symbol need translation via asSeenFrom when accessed via prefix pre?

    def migrationMessage ( implicit ctx: Context ) : Option [ Try [ ScalaVersion ] ]
    def migrationVersion ( implicit ctx: Context ) : Option [ Try [ ScalaVersion ] ]
    def mixins ( implicit ctx: Context ) : List [ ClassSymbol ]

    All traits implemented by a class, except for those inherited through the superclass. The empty list if self is a trait.

    All traits implemented by a class, except for those inherited through the superclass. The empty list if self is a trait.

    def moduleClass ( implicit ctx: Context ) : Symbol

    The class implementing this module, NoSymbol if not applicable.

    The class implementing this module, NoSymbol if not applicable.

    final def name ( implicit ctx: Context ) : ThisName

    The current name of this symbol

    The current name of this symbol

    def name : Name

    The name of the symbol

    The name of the symbol

    def name_= ( n: Name ) : Unit

    Update the name; only called when unpickling top-level classes

    Update the name; only called when unpickling top-level classes

    [+] def namedType ( implicit ctx: Context ) : NamedType

    The NamedType representing this denotation at its original location. Same as either typeRef or termRefWithSig depending whether this denotes a type or...

    The NamedType representing this denotation at its original location. Same as either typeRef or termRefWithSig depending whether this denotes a type or not.

    def ne ( x$0: Object ) : Boolean
    def newLikeThis ( s: Symbol , i: Type ) : SingleDenotation
    [+] def nextInRun_= ( x$1: SingleDenotation ) : Unit

    The next SingleDenotation in this run, with wrap-around from last to first.

    There may be several SingleDenotations with different validity representing...

    The next SingleDenotation in this run, with wrap-around from last to first.

    There may be several SingleDenotations with different validity representing the same underlying definition at different phases. These are called a "flock". Flock members are generated by

    def nonMemberTermRef ( implicit ctx: Context ) : TermRef
    def notify ( ) : Unit
    def notifyAll ( ) : Unit
    def orElse ( that: => Symbol ) ( implicit ctx: Context ) : Symbol

    This symbol, if it exists, otherwise the result of evaluating that

    This symbol, if it exists, otherwise the result of evaluating that

    def orElse ( that: => Denotation ) : Denotation

    If this denotation does not exist, fallback to alternative

    If this denotation does not exist, fallback to alternative

    def orElse ( that: => SingleDenotation ) : SingleDenotation
    def originalName ( implicit ctx: Context ) : Name

    The name with which the denoting symbol was created

    The name with which the denoting symbol was created

    def overriddenSymbol ( inClass: ClassSymbol ) ( implicit ctx: Context ) : Symbol

    The symbol, in class inClass, that is overridden by this denotation.

    The symbol, in class inClass, that is overridden by this denotation.

    def overridingSymbol ( inClass: ClassSymbol ) ( implicit ctx: Context ) : Symbol

    The symbol overriding this symbol in given subclass ofclazz.

    The symbol overriding this symbol in given subclass ofclazz.

    def owner : Symbol

    The owner of the symbol; overridden in NoDenotation

    The owner of the symbol; overridden in NoDenotation

    def ownersIterator ( implicit ctx: Context ) : Iterator [ Symbol ]

    The chain of owners of this denotation, starting with the denoting symbol itself

    The chain of owners of this denotation, starting with the denoting symbol itself

    def paramInfo ( implicit ctx: Context ) : Type

    The info of the type parameter

    The info of the type parameter

    [+] def paramInfoAsSeenFrom ( pre: Type ) ( implicit ctx: Context ) : Type

    The info of the type parameter as seen from a prefix type. For type parameter symbols, this is the memberInfo as seen from prefix. For type lambda param...

    The info of the type parameter as seen from a prefix type. For type parameter symbols, this is the memberInfo as seen from prefix. For type lambda parameters, it's the same as paramInfos as asSeenFrom has already been applied to the whole type lambda.

    def paramInfoOrCompleter ( implicit ctx: Context ) : Type

    The parameter bounds, or the completer if the type parameter is an as-yet uncompleted symbol.

    The parameter bounds, or the completer if the type parameter is an as-yet uncompleted symbol.

    def paramName ( implicit ctx: Context ) : ThisName

    The name of the type parameter

    The name of the type parameter

    def paramRef ( implicit ctx: Context ) : Type

    A type that refers to the parameter

    A type that refers to the parameter

    def paramVariance ( implicit ctx: Context ) : Int

    The variance of the type parameter

    The variance of the type parameter

    def pos : Position

    The position of this symbol, or NoPosition is symbol was not loaded from source.

    The position of this symbol, or NoPosition is symbol was not loaded from source.

    protected def prefixString : String

    The prefix string to be used when displaying this symbol without denotation

    The prefix string to be used when displaying this symbol without denotation

    def primaryConstructor ( implicit ctx: Context ) : Symbol

    The primary constructor of a class or trait, NoSymbol if not applicable.

    The primary constructor of a class or trait, NoSymbol if not applicable.

    def privateWithin ( implicit ctx: Context ) : Symbol

    The privateWithin boundary, NoSymbol if no boundary is given.

    The privateWithin boundary, NoSymbol if no boundary is given.

    def privateWithin_= ( sym: Symbol ) : Unit

    Set privateWithin.

    Set privateWithin.

    def registerCompanionMethod ( name: Name , target: Symbol ) ( implicit ctx: Context ) : Symbol | Unit
    def removeAnnotation ( cls: Symbol ) ( implicit ctx: Context ) : Unit

    Remove annotation with given class from this denotation

    Remove annotation with given class from this denotation

    def requiredClass ( name: PreName ) ( implicit ctx: Context ) : ClassSymbol
    def requiredMethod ( name: PreName , argTypes: List [ Type ] ) ( implicit ctx: Context ) : TermSymbol
    def requiredMethod ( name: PreName ) ( implicit ctx: Context ) : TermSymbol
    def requiredMethodRef ( name: PreName , argTypes: List [ Type ] ) ( implicit ctx: Context ) : TermRef
    def requiredMethodRef ( name: PreName ) ( implicit ctx: Context ) : TermRef
    [+] def requiredSymbol ( p: Symbol => Boolean , source: AbstractFile , generateStubs: Boolean ) ( implicit ctx: Context ) : Symbol

    Return symbol in this denotation that satisfies the given predicate. if generateStubs is specified, return a stubsymbol if denotation is a missing ref.

    Return symbol in this denotation that satisfies the given predicate. if generateStubs is specified, return a stubsymbol if denotation is a missing ref. Throw a TypeError if predicate fails to disambiguate symbol or no alternative matches.

    def requiredValue ( name: PreName ) ( implicit ctx: Context ) : TermSymbol
    def requiredValueRef ( name: PreName ) ( implicit ctx: Context ) : TermRef
    def resetFlag ( flags: FlagSet ) : Unit

    Unset given flags(s) of this denotation

    Unset given flags(s) of this denotation

    def scalacLinkedClass ( implicit ctx: Context ) : Symbol
    def setFlag ( flags: FlagSet ) : Unit

    Set given flags(s) of this denotation

    Set given flags(s) of this denotation

    def setNoInitsFlags ( flags: FlagSet ) : Unit

    Set applicable flags from flags which is a subset of {NoInits, PureInterface}

    Set applicable flags from flags which is a subset of {NoInits, PureInterface}

    def setter ( implicit ctx: Context ) : Symbol
    def show ( implicit ctx: Context ) : String

    The string representation of this showable element.

    The string representation of this showable element.

    def showDcl ( implicit ctx: Context ) : String
    def showDcl ( implicit ctx: Context ) : String

    Show declaration string; useful for showing declarations as seen from subclasses.

    Show declaration string; useful for showing declarations as seen from subclasses.

    def showExtendedLocation ( implicit ctx: Context ) : String
    def showFullName ( implicit ctx: Context ) : String
    def showKind ( implicit ctx: Context ) : String
    def showLocated ( implicit ctx: Context ) : String
    def showName ( implicit ctx: Context ) : String
    def showSummary ( implicit ctx: Context ) : String
    def showSummary ( depth: Int ) ( implicit ctx: Context ) : String

    The summarized string representation of this showable element. Recursion depth is limited to some smallish value. Default is Config.summarizeDepth.

    The summarized string representation of this showable element. Recursion depth is limited to some smallish value. Default is Config.summarizeDepth.

    def signature ( implicit ctx: Context ) : Signature

    The signature of the denotation.

    The signature of the denotation.

    def skipConstructor ( implicit ctx: Context ) : Symbol

    If this is a constructor, its owner: otherwise this.

    If this is a constructor, its owner: otherwise this.

    def skipWeakOwner ( implicit ctx: Context ) : Symbol

    If this is a weak owner, its owner, otherwise the denoting symbol.

    If this is a weak owner, its owner, otherwise the denoting symbol.

    final def sourceFile ( implicit ctx: Context ) : AbstractFile

    The source file from which this class was generated, null if not applicable.

    The source file from which this class was generated, null if not applicable.

    def sourceModule ( implicit ctx: Context ) : Symbol

    The module implemented by this module class, NoSymbol if not applicable.

    The module implemented by this module class, NoSymbol if not applicable.

    def sourcePosition ( pos: Position ) ( implicit ctx: Context ) : SourcePosition
    def staleSymbolError ( implicit ctx: Context ) : Nothing
    def subst ( from: List [ Symbol ] , to: List [ Symbol ] ) : Symbol

    Apply symbol/symbol substitution to this symbol

    Apply symbol/symbol substitution to this symbol

    def suchThat ( p: Symbol => Boolean ) ( implicit ctx: Context ) : SingleDenotation

    The unique alternative of this denotation that satisfies the predicate p, or NoDenotation if no satisfying alternative exists.

    The unique alternative of this denotation that satisfies the predicate p, or NoDenotation if no satisfying alternative exists.

    [+] def superId ( implicit ctx: Context ) : Int

    A unique, densely packed integer tag for each class symbol, -1 for all other symbols. To save memory, this method should be called only if class is a su...

    A unique, densely packed integer tag for each class symbol, -1 for all other symbols. To save memory, this method should be called only if class is a super class of some other class.

    [+] def superSymbolIn ( base: Symbol ) ( implicit ctx: Context ) : Symbol

    The symbol accessed by a super in the definition of this symbol when seen from class base. This symbol is always concrete. pre: this.owner is in the bas...

    The symbol accessed by a super in the definition of this symbol when seen from class base. This symbol is always concrete. pre: this.owner is in the base class sequence of base.

    def syncWithParents ( implicit ctx: Context ) : SingleDenotation

    For ClassDenotations only: If caches influenced by parent classes are still valid, the denotation itself, otherwise a freshly initialized copy.

    For ClassDenotations only: If caches influenced by parent classes are still valid, the denotation itself, otherwise a freshly initialized copy.

    def synchronized ( x$0: X0 ) : X0
    def termParamAccessors ( implicit ctx: Context ) : List [ Symbol ]
    def termRef ( implicit ctx: Context ) : TermRef

    The TermRef representing this term denotation at its original location.

    The TermRef representing this term denotation at its original location.

    def termRefWithSig ( implicit ctx: Context ) : TermRef

    The TermRef representing this term denotation at its original location at the denotation's signature.

    The TermRef representing this term denotation at its original location at the denotation's signature.

    def thisType ( implicit ctx: Context ) : Type

    The type This(cls), where cls is this class, NoPrefix for all other symbols

    The type This(cls), where cls is this class, NoPrefix for all other symbols

    def toDenot ( pre: Type ) ( implicit ctx: Context ) : Denotation

    Convert to full denotation by &-ing all elements

    Convert to full denotation by &-ing all elements

    override def toString : String
    def toString : String
    def toText ( printer: Printer ) : Text

    The text representation of this showable element. This normally dispatches to a pattern matching method in Printers.

    The text representation of this showable element. This normally dispatches to a pattern matching method in Printers.

    def toText ( printer: Printer ) : Text

    The text representation of this showable element. This normally dispatches to a pattern matching method in Printers.

    The text representation of this showable element. This normally dispatches to a pattern matching method in Printers.

    def topLevelClass ( implicit ctx: Context ) : Symbol

    The top-level class containing this denotation, except for a toplevel module, where its module class is returned.

    The top-level class containing this denotation, except for a toplevel module, where its module class is returned.

    [+] def transformAfter ( phase: DenotTransformer , f: SymDenotation => SymDenotation ) ( implicit ctx: Context ) : Unit

    Apply a transformation f to all denotations in this group that start at or after given phase. Denotations are replaced while keeping the same validity...

    Apply a transformation f to all denotations in this group that start at or after given phase. Denotations are replaced while keeping the same validity periods.

    def transformAnnotations ( f: Annotation => Annotation ) ( implicit ctx: Context ) : Unit

    Apply transform f to all annotations of this denotation

    Apply transform f to all annotations of this denotation

    def typeParamCreationFlags : FlagSet

    The flags to be used for a type parameter owned by this symbol. Overridden by ClassDenotation.

    The flags to be used for a type parameter owned by this symbol. Overridden by ClassDenotation.

    def typeParams ( implicit ctx: Context ) : List [ TypeSymbol ]

    The type parameters of a class symbol, Nil for all other symbols

    The type parameters of a class symbol, Nil for all other symbols

    def typeRef ( implicit ctx: Context ) : TypeRef

    The TypeRef representing this type denotation at its original location.

    The TypeRef representing this type denotation at its original location.

    def underlyingSymbol ( implicit ctx: Context ) : Symbol

    The field accessed by a getter or setter, or if it does not exists, the getter of a setter, or if that does not exist the symbol itself.

    The field accessed by a getter or setter, or if it does not exists, the getter of a setter, or if that does not exist the symbol itself.

    def unforcedAnnotation ( cls: Symbol ) ( implicit ctx: Context ) : Option [ Annotation ]

    The same as getAnnotation, but without ensuring that the symbol carrying the annotation is completed

    The same as getAnnotation, but without ensuring that the symbol carrying the annotation is completed

    [+] def unforcedDecls ( implicit ctx: Context ) : Scope

    The symbols defined in this class or object. Careful! This does not force the type, so is compilation order dependent. This method should be used only i...

      The symbols defined in this class or object. Careful! This does not force the type, so is compilation order dependent. This method should be used only in the following circumstances:

      1. When accessing type parameters or type parameter accessors (both are entered before completion).
      2. When obtaining the current scope in order to enter, rename or delete something there.
      3. When playing it safe in order not to raise CylicReferences, e.g. for printing things or taking more efficient shortcuts (e.g. the stillValid test).
      def unforcedInfo : Option [ Type ]

      Optionally, the info if it is completed

      Optionally, the info if it is completed

      def union ( that: PreDenotation ) : PreDenotation

      The union of two groups.

      The union of two groups.

      def unsupported ( methodName: String ) : Nothing

      Throws an UnsupportedOperationException with the given method name.

      Throws an UnsupportedOperationException with the given method name.

      def updateAnnotation ( annot: Annotation ) ( implicit ctx: Context ) : Unit

      Remove any annotations with same class as annot, and add annot

      Remove any annotations with same class as annot, and add annot

      def valRef ( implicit ctx: Context ) : TermRef

      The TermRef representing this term denotation at its original location and at signature NotAMethod.

      The TermRef representing this term denotation at its original location and at signature NotAMethod.

      def validFor : Period

      The period during which this denotation is valid.

      The period during which this denotation is valid.

      def validFor_= ( p: Period ) : Unit
      def variance ( implicit ctx: Context ) : Int

      The variance of this type parameter or type member as an Int, with +1 = Covariant, -1 = Contravariant, 0 = Nonvariant, or not a type parameter

      The variance of this type parameter or type member as an Int, with +1 = Covariant, -1 = Contravariant, 0 = Nonvariant, or not a type parameter

      def wait ( ) : Unit
      def wait ( x$0: Long ) : Unit
      def wait ( x$0: Long , x$1: Int ) : Unit
      def withAnnotationsCarrying ( from: Symbol , meta: ClassSymbol ) ( implicit ctx: Context ) : self.type
      def | ( that: Denotation , pre: Type ) ( implicit ctx: Context ) : Denotation

      Form a choice between this denotation and that one.

      Form a choice between this denotation and that one.