Dotty Documentation

0.15.0-bin-SNAPSHOT

class ClassSymbol
extends Symbol

[-] Constructors

ClassSymbol ( coord: Coord , assocFile: AbstractFile , id: Int )
ClassSymbol ( symbol: Symbol , maybeOwner: Symbol , name: Name , initFlags: FlagSet , initInfo: Type , initPrivateWithin: Symbol )

[-] Members

[+] type ThisName = TypeName
[+] type TreeOrProvider = AnyRef
[+] val assocFile : AbstractFile
[+] private val coord : Coord
[+] private val id : Int
[+] private var mySource : SourceFile
[+] private var myTree : TreeOrProvider
[+] 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 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 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

[+] 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
[+] def assertNoSkolems ( tp: Type ) : Unit
[+] override def associatedFile ( implicit ctx: Context ) : AbstractFile

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

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

[+] def baseClasses ( implicit onBehalf: BaseData , ctx: Context ) : List [ ClassSymbol ]

The base classes of this class in linearization order, with the class itself as first element.

[+] def baseTypeOf ( tp: Type ) ( implicit ctx: Context ) : Type

Compute tp.baseType(this)

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

[+] final def classDenot ( implicit ctx: Context ) : ClassDenotation
[+] def classInfo ( implicit ctx: Context ) : ClassInfo

The info asserted to have type ClassInfo

[+] def classParents ( implicit ctx: Context ) : List [ Type ]
[+] def classSymbol : ClassSymbol

The symbol asserted to have type ClassSymbol

[+] 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
[+] def computeBaseData ( implicit onBehalf: BaseData , ctx: Context ) : ( List [ ClassSymbol ], BaseClassSet )
[+] def computeMemberNames ( keepOnly: NameFilter ) ( implicit onBehalf: MemberNames , ctx: Context ) : Set [ Name ]
[+] def computeNPMembersNamed ( name: Name ) ( implicit ctx: Context ) : PreDenotation
[+] def containsSym ( sym: Symbol ) : Boolean

Group contains a denotation that refers to given symbol

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

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 definedPeriodsString : String
[+] def delete ( sym: Symbol ) ( implicit ctx: Context ) : Unit

Delete symbol from current scope. Note: We require that this does not happen after the first time someone does a findMember on a subclass.

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

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

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

Make sure this denotation is completed

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

If this class has the same decls scope reference in phase and phase.next, install a new denotation with a cloned scope in phase.next.

[+] def ensureNotPrivate ( implicit ctx: Context ) : SymDenotation

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

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

Make sure the type parameters of this class appear in the order given by typeParams in the scope of the class. Reorder definitions in scope if necessary.

[+] def enter ( sym: Symbol , scope: Scope ) ( implicit ctx: Context ) : Unit

Enter a symbol in current scope, and future scopes of same denotation. Note: We require that this does not happen after the first time someone does a findMember on a subclass.

[+] def enter$default$2 : EmptyScope.type

Enter a symbol in current scope, and future scopes of same denotation. Note: We require that this does not happen after the first time someone does a findMember on a subclass.

[+] def enterNoReplace ( sym: Symbol , scope: MutableScope ) ( implicit ctx: Context ) : Unit

Enter a symbol in given scope without potentially replacing the old copy.

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

The explicitly given self type (self types of modules are assumed to be explcitly given here).

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

[+] 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 invalidateBaseTypeCache ( ) : 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 isAsConcrete ( that: Symbol ) ( implicit ctx: Context ) : Boolean

Is this symbol concrete, or that symbol deferred?

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

[+] 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 isError : Boolean

is this symbol the result of an erroneous definition?

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

Is this a getter?

[+] def isImport : Boolean

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

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

[+] def isProperlyContainedIn ( boundary: Symbol ) ( implicit ctx: Context ) : Boolean
[+] 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 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.

[+] 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 isTerm : Boolean

Is this a reference to a term symbol?

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

Is this denotation a type?

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

Is it possible that a class inherits both this and that?

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

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

[+] def memberNames ( keepOnly: NameFilter ) ( implicit onBehalf: MemberNames , ctx: Context ) : Set [ Name ]
[+] def membersNamed ( name: Name ) ( implicit ctx: Context ) : PreDenotation

All members of this class that have the given name. The elements of the returned pre-denotation all have existing symbols.

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

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

[+] private def mightContain ( tree: Tree , id: String ) ( implicit ctx: Context ) : Boolean
[+] def moduleClass ( implicit ctx: Context ) : Symbol

The class implementing this module, NoSymbol if not applicable.

[+] def myInfo_= ( x$1: Type ) : Unit
[+] def name ( implicit ctx: Context ) : Name

The name of the denotation

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

The NamedType representing this denotation at its original location. Same as either typeRef or termRef 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 same underlying definition at different phases. These are called a "flock". Flock members are generated by

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

Equivalent to allOverriddenSymbols.headOption.getOrElse(NoSymbol) but more efficient.

[+] def nonPrivateMembersNamed ( name: Name ) ( implicit ctx: Context ) : PreDenotation

All non-private members of this class that have the given name. The elements of the returned pre-denotation all have existing symbols.

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

If this is a synthetic opaque type alias, mark it as Deferred with empty bounds

[+] def notify ( ) : Unit
[+] def notifyAll ( ) : Unit
[+] def opaqueAlias ( implicit ctx: Context ) : Type

The alias of a synthetic opaque type that's stored in the self type of the containing object.

[+] def orElse ( that: => SingleDenotation ) : SingleDenotation
[+] def orElse ( that: => Denotation ) : Denotation

If this denotation does not exist, fallback to alternative

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

The name with which the denoting symbol was created

[+] def overriddenSymbol ( inClass: ClassSymbol , siteClass: ClassSymbol ) ( implicit ctx: Context ) : Symbol

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

[+] def overriddenSymbol$default$2 : ClassSymbol

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

[+] def overridingSymbol ( inClass: ClassSymbol ) ( implicit ctx: Context ) : Symbol

The symbol overriding this symbol in given subclass ofclazz.

[+] def owner : Symbol

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

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

The term parameter accessors of this class. Both getters and setters are returned in this list.

[+] protected override def prefixString : String

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.

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

The privateWithin boundary, NoSymbol if no boundary is given.

[+] def privateWithin_= ( sym: Symbol ) : Unit

Set privateWithin.

[+] def proceedWithEnter ( sym: Symbol , mscope: MutableScope ) ( implicit ctx: Context ) : Boolean

Hook to do a pre-enter test. Overridden in PackageDenotation

[+] def registerCompanion ( companion: Symbol ) ( implicit ctx: Context ) : Unit

Register companion class

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

The registered companion; overridden in ClassDenotation

[+] def registeredCompanion_= ( c: Symbol ) : Unit
[+] def relevantFlagsFor ( fs: FlagSet ) ( implicit ctx: Context ) : FlagSet
[+] def removeAnnotation ( cls: Symbol ) ( implicit ctx: Context ) : Unit

Remove annotation with given class from this denotation

[+] def replace ( prev: Symbol , replacement: Symbol ) ( implicit ctx: Context ) : Unit

Replace symbol prev (if defined in current class) by symbol replacement. If prev is not defined in current class, do nothing.

[+] def replaceWith ( newd: SingleDenotation ) : Unit

Insert this denotation instead of old. Also ensure that old refers with nextInRun to this denotation and set its validFor field to NoWhere. This is necessary so that references to the old denotation can be brought forward via current to a valid denotation.

The code to achieve this is subtle in that it works correctly whether the replaced denotation is the only one in its cycle or not.

[+] def requiredClass ( pname: PreName ) ( implicit ctx: Context ) : ClassSymbol
[+] def requiredMethod ( pname: PreName , argTypes: List [ Type ] ) ( implicit ctx: Context ) : TermSymbol