Dotty Documentation

0.15.0-bin-SNAPSHOT

class Symbol
extends Designator with ParamInfo with Showable

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

[-] Constructors

Symbol ( myCoord: Coord , id: Int )
Symbol ( sym: Symbol )
Symbol ( s: Symbol )
Symbol ( sym: Symbol )
Symbol ( symbol: Symbol , maybeOwner: Symbol , name: Name , initFlags: FlagSet , initInfo: Type , initPrivateWithin: Symbol )
Symbol ( self: Symbol )
Symbol ( self: Symbol )
Symbol ( sym: Symbol )
Symbol ( implicit ctx: Context )

[-] Members

[+] type DontUseSymbolOnSymbol =
[+] type ThisName = Nothing <: Name
[+] private var checkedPeriod : Period
[+] val id : Int
[+] private var lastDenot : SymDenotation

The last denotation of this symbol

[+] private var myCoord : Coord
[+] private var myDefTree : Tree
[+] 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 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. 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 &$default$3 : Boolean

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 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

[+] 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 exists.

[+] def accessibleFrom$default$2 : Boolean

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

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

Add all given annotations to this symbol

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

All symbols overridden by this denotation.

[+] def alternatives : List [ SingleDenotation ]

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.

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

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

[+] def appliedRef ( implicit ctx: Context ) : Type

The typeRef applied to its own type parameters

[+] final def asClass : ClassSymbol
[+] def asClass : ClassDenotation

Cast to class denotation

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

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

[+] 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.

[+] def atSignature$default$2 : NoPrefix.type

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

[+] def atSignature$default$3 : Boolean

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.

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

Can this symbol have a companion module? This is the case if it is a class or an opaque type alias.

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

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

[+] def caseAccessors ( implicit ctx: Context ) : List [ Symbol ]
[+] def changedClassParents ( info1: Type , info2: Type , completersMatter: Boolean ) : Boolean

Are info1 and info2 ClassInfo types with different parents?

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

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

[+] def children ( implicit ctx: Context ) : List [ Symbol ]

If this is a sealed class, its known children in the order of textual occurrence

[+] 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 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 if this module does not exist.

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

The opaque type 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 type does not exist.

[+] def completeFrom ( completer: LazyType ) ( implicit ctx: Context ) : Unit
[+] def completer : LazyType

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

[+] def computeAsSeenFrom ( pre: Type ) ( implicit ctx: Context ) : SingleDenotation
[+] private def computeDenot ( lastd: SymDenotation ) ( implicit ctx: Context ) : SymDenotation
[+] def containsSym ( sym: Symbol ) : Boolean

Group contains a denotation that refers to given symbol

[+] def coord : Coord
[+] def coord_= ( c: Coord ) : Unit

Set the coordinate of this class, this is only useful when the coordinate is not known at symbol creation. This is the case for root symbols unpickled from TASTY.

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

Copy a symbol, overriding selective fields. Note that coord and associatedFile will be set from the fields in owner, not the fields in sym.

[+] def copy$default$1 : Symbol

Copy a symbol, overriding selective fields. Note that coord and associatedFile will be set from the fields in owner, not the fields in sym.

[+] def copy$default$2 : N

Copy a symbol, overriding selective fields. Note that coord and associatedFile will be set from the fields in owner, not the fields in sym.

[+] def copy$default$3 : FlagSet

Copy a symbol, overriding selective fields. Note that coord and associatedFile will be set from the fields in owner, not the fields in sym.

[+] def copy$default$4 : Type

Copy a symbol, overriding selective fields. Note that coord and associatedFile will be set from the fields in owner, not the fields in sym.

[+] def copy$default$5 : Symbol

Copy a symbol, overriding selective fields. Note that coord and associatedFile will be set from the fields in owner, not the fields in sym.

[+] def copy$default$6 : Coord

Copy a symbol, overriding selective fields. Note that coord and associatedFile will be set from the fields in owner, not the fields in sym.

[+] def copy$default$7 : Null

Copy a symbol, overriding selective fields. Note that coord and associatedFile will be set from the fields in owner, not the fields in sym.

[+] def copyCaches ( from: SymDenotation , phase: Phase ) ( implicit ctx: Context ) : SymDenotation

Copy mamberNames and baseData caches from given denotation, provided they are valid at given phase.

[+] 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

[+] def copySymDenotation$default$1 : Symbol

Copy this denotation, overriding selective fields

[+] def copySymDenotation$default$2 : Symbol

Copy this denotation, overriding selective fields

[+] def copySymDenotation$default$3 : Name

Copy this denotation, overriding selective fields

[+] def copySymDenotation$default$4 : FlagSet

Copy this denotation, overriding selective fields

[+] def copySymDenotation$default$5 : Null

Copy this denotation, overriding selective fields

[+] def copySymDenotation$default$6 : Null

Copy this denotation, overriding selective fields

[+] def copySymDenotation$default$7 : Null

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.

[+] 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). 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 package class without forcing it. Right now, the only usage is for the AnyRef alias in Definitions.

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

The current declaration in this symbol's class owner that has the same name as this one, and, if there are several, also has the same signature.

[+] def debugString : String
[+] def defRunId : RunId
[+] def defTree : Tree

The tree defining the symbol at pickler time, EmptyTree if none was retained

[+] def defTree_= ( tree: Tree ) ( implicit ctx: Context ) : Unit

Set defining tree if this symbol retains its definition tree

[+] def definedPeriodsString : String
[+] final def denot ( implicit ctx: Context ) : SymDenotation

The current denotation of this symbol

[+] def denot_= ( d: SymDenotation ) : Unit

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?

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

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 from suchThat in that single-denotations that do not satisfy the predicate are left alone (whereas suchThat would map them to NoDenotation).

[+] final def drop ( ) ( implicit ctx: Context ) : Unit

Remove symbol from scope of owning class

[+] def dropAfter ( phase: DenotTransformer ) ( implicit ctx: Context ) : Unit

Remove symbol from scope of owning class 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 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 clash" suffix

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

The owner, skipping package objects 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 JavaStatic 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.

[+] 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.

[+] @tailrec def enclosingMethodOrClass ( implicit ctx: Context ) : Symbol

The closest enclosing method or class of this symbol

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

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.

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

The closest properly enclosing method or class of this symbol.

[+] def ensureCompleted ( ) ( implicit ctx: Context ) : Unit

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

[+] final def entered ( implicit ctx: Context ) : Symbol

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 being valid after phase.

[+] def eq ( x$0: Object ) : Boolean
[+] def exists : Boolean

Is this denotation different from NoDenotation or an ErrorDenotation?

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

The expanded name of this denotation.

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

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

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

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

[+] 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.

[+] def filterWithFlags ( required: FlagConjunction , excluded: FlagSet ) ( implicit ctx: Context ) : SingleDenotation

Keep only those denotations in this group that have all of the flags in required, but none of the flags in excluded.

[+] def filterWithPredicate ( p: SingleDenotation => Boolean ) : SingleDenotation

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

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

Find member of this denotation with given name, all required flags and no excluded flag, and produce a denotation that contains the type of the member as seen from given prefix pre.

[+] def first : SingleDenotation

First/last denotation in the group

[+] def flags ( implicit ctx: Context ) : FlagSet

The flag set

[+] def flagsUNSAFE : FlagSet

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

[+] def flags_= ( flags: FlagSet ) : Unit

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.

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

fullName where `.' is the separator character

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

The encoded full path name of this denotation (separated by prefixKind), followed by the separator implied by kind and the given name. Drops package objects. Represents each term in the owner chain by a simple _$.

[+] 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 as indicated by the given name kind. Drops package objects. Represents each term in the owner chain by a simple _$.

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

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?

[+] def hasAnnotation ( cls: Symbol ) ( implicit ctx: Context ) : Boolean

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

[+] def hasAnonymousChild ( implicit ctx: Context ) : Boolean
[+] def hasDefaultParams ( implicit ctx: Context ) : Boolean

Does this symbol have defined or inherited default parameters?

[+] def hasSkolems ( tp: Type ) : Boolean
[+] def hasUniqueSym : Boolean

Denotation points to unique symbol; false for overloaded denotations and JointRef denotations.

[+] override def hashCode ( ) : Int
[+] def history : List [ SingleDenotation ]
[+] 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.

[+] def infoOrCompleter : Type

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.

[+] def installAfter ( phase: DenotTransformer ) ( implicit ctx: Context ) : Unit

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

[+] def invalidateDenotCache ( ) : Unit
[+] def invalidateInheritedInfo ( ) : Unit

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

[+] 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?

[+] def is ( fs: FlagSet ) ( implicit ctx: Context ) : Boolean

Has this denotation one of the flags in fs set?

[+] 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?

[+] def is ( fs: FlagConjunction ) ( implicit ctx: Context ) : Boolean

Has this denotation all of the flags in fs set?

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

Is symbol known to not exist?

[+] def isAbstractOrAliasType : Boolean

Is this symbol an abstract or alias type?

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

Is this symbol an abstract type or type parameter?

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

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?

[+] def isAccessibleFrom$default$2 : Boolean

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

[+] def isAccessibleFrom$default$3 : Null

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

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

Is this symbol an alias type?

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

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?

[+] final def isClass : Boolean
[+] def isClass : Boolean

Is this denotation a class?

[+] def isClassConstructor : Boolean

is this the constructor of a class?

[+] def isCoDefinedWith ( other: Symbol ) ( implicit ctx: Context ) : Boolean

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

[+] def isCompleted : Boolean

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

[+] def isConstructor : Boolean

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.

[+] final def isDefinedInCurrentRun ( implicit ctx: Context ) : Boolean

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?

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

An erased value or an inline method, excluding @forceInline annotated methods. The latter have to be kept around to get to parity with Scala. This is necessary at least until we have full bootstrap. Right now dotty-bootstrapped involves running the Dotty compiler compiled with Scala 2 with a Dotty runtime library compiled with Dotty. If we erase @forceInline annotated methods, this means that the support methods in dotty.runtime.LazyVals vanish. But they are needed for running the lazy val implementations in the Scala-2 compiled compiler.

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

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?

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

Does this symbol refer to anonymous classes synthesized by enum desugaring?

[+] def isError : Boolean

is this symbol the result of an erroneous definition?

[+] def isField ( implicit ctx: Context ) : Boolean
[+] def isGetter ( implicit ctx: Context ) : Boolean

Is this a getter?

[+] def isImport : Boolean

is this a symbol representing an import?

[+] def isInaccessibleChildOf ( cls: Symbol ) ( implicit ctx: Context ) : Boolean

Is this symbol defined locally (i.e. at some level owned by a term) and defined in a different toplevel class than its supposed parent class cls? Such children are not pickled, and have to be reconstituted manually.

[+] @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 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?

[+] @tailrec def isLocal ( implicit ctx: Context ) : Boolean

Is symbol directly or indirectly owned by a term symbol?

[+] def isLocalDummy : Boolean

Is this a local template dummmy?

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

Is this a denotation of a class that does not have - either direct or inherited - initaliazion code?

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

Is symbol a class for which no runtime representation exists?

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

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?

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

Is this symbol a user-defined opaque alias type?

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

Is this symbol the companion of an opaque alias type?

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

Is this symbol a synthetic opaque type inside an opaque companion object?

[+] def isOverloaded : Boolean

Is this denotation overloaded?

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

Is this symbol a package object or its module class?

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

A type or term parameter or a term parameter accessor

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

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

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

Is symbol a primitive value class?

[+] final def isPrivate ( implicit ctx: Context ) : Boolean

Test whether symbol is private. This conservatively returns false if symbol does not yet have a denotation, or denotation is a class that is not yet read.

[+] def isProperlyContainedIn ( boundary: Symbol ) ( implicit ctx: Context ) : Boolean
[+] def isQuote ( implicit ctx: Context ) : Boolean

Is symbol a quote operation?

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

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 an anonymous function

[+] 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 Refinement types.

[+] def isRoot : Boolean

Is this symbol the root class or its companion object?

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

Is this a Scala 2 macro

[+] 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 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 isSerializable ( implicit ctx: Context ) : Boolean

Is this symbol a class that extends java.io.Serializable ?

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

Is this a setter?

[+] def isSkolem : Boolean
[+] def isSplice ( implicit ctx: Context ) : Boolean

Is symbol a splice operation?

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

Is this a denotation of a stable term (or an arbitrary type)? Terms are stable if they are idempotent (as in TreeInfo.Idempotent): that is, they always return the same value, if any.

A member is stable, basically, if it behaves like a field projection: that is, it projects a constant result out of its owner.

However, a stable member might not yet be initialized (if it is an object or anyhow lazy). So the first call to a stable member might fail and/or produce side effects.

[+] final def isStatic ( implicit ctx: Context ) : Boolean

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)?

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

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?

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

Is this a subclass of the given class base?

[+] def isSuperAccessor ( implicit ctx: Context ) : Boolean
[+] final def isTerm ( implicit ctx: Context ) : Boolean
[+] def isTerm : Boolean

Is this a reference to a term symbol?

[+] def isTopLevelClass ( implicit ctx: Context ) : Boolean
[+] final def isType ( implicit ctx: Context ) : Boolean
[+] def isType : Boolean

Is this denotation a type?

[+] def isTypeCast ( implicit ctx: Context ) : Boolean
[+] def isTypeParam ( implicit ctx: Context ) : Boolean

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

[+] def isTypeTest ( implicit ctx: Context ) : Boolean
[+] def isTypeTestOrCast ( implicit ctx: Context ) : Boolean
[+] final def isValidInCurrentRun ( implicit ctx: Context ) : Boolean

Is symbol valid in current run?

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

Is this symbol a class that extends AnyVal?

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

Is this a synthetic 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 - non-lazy valdefs

[+] def last : SingleDenotation
[+] final def lastKnownDenotation : SymDenotation

The last known denotation of this symbol, without going through current

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

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.

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

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 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

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

()T and => T types should be treated as equivalent for this symbol. Note: For the moment, we treat Scala-2 compiled symbols as loose matching, because the Scala library does not always follow the right conventions. Examples are: isWhole(), toInt(), toDouble() in BigDecimal, Numeric, RichInt, ScalaNumberProxy.

[+] def matches ( other: SingleDenotation ) ( implicit ctx: Context ) : Boolean

Group contains a denotation with the same signature as other

[+] 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.

[+] 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.

[+] def matchingMember ( site: Type ) ( implicit ctx: Context ) : Symbol

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

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

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?

[+] def migrationMessage ( implicit ctx: Context ) : Option [ Try [ ScalaVersion ] ]