Symbols

dotty.tools.dotc.core.Symbols
object Symbols

Attributes

Graph
Supertypes
class Object
trait Matchable
class Any
Self type
Symbols.type

Members list

Type members

Classlikes

class ClassSymbol extends Symbol

Attributes

Supertypes
class Symbol
trait Showable
trait SrcPos
trait ParamInfo
class Designator
class Object
trait Matchable
class Any
Show all
object NoSymbol extends Symbol

Attributes

Supertypes
class Symbol
trait Showable
trait SrcPos
trait ParamInfo
class Designator
class Object
trait Matchable
class Any
Show all
Self type
NoSymbol.type

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

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

Value parameters

id

A unique identifier of the symbol (unique per ContextBase)

myCoord

The coordinates of the symbol (a position or an index)

Attributes

Supertypes
trait Showable
trait SrcPos
trait ParamInfo
class Designator
class Object
trait Matchable
class Any
Show all
Known subtypes
class ClassSymbol
object NoSymbol.type
object TermSymbols

Matches lists of term symbols, including the empty list. All symbols in the list are assumed to be of the same kind.

Matches lists of term symbols, including the empty list. All symbols in the list are assumed to be of the same kind.

Attributes

Supertypes
class Object
trait Matchable
class Any
Self type
object TypeSymbols

Matches lists of type symbols, excluding the empty list. All symbols in the list are assumed to be of the same kind.

Matches lists of type symbols, excluding the empty list. All symbols in the list are assumed to be of the same kind.

Attributes

Supertypes
class Object
trait Matchable
class Any
Self type

Types

type TermSymbol = Symbol { type ThisName = TermName; }
type TypeSymbol = Symbol { type ThisName = TypeName; }

Value members

Concrete methods

def MutableSymbolMap[T](initialCapacity: Int): EqHashMap[Symbol, T]

The current class

The current class

Attributes

def defn(using Context): Definitions

The Definitions object

The Definitions object

Attributes

Get ClassSymbol if class is either defined in current compilation run or present on classpath. Returns NoSymbol otherwise.

Get ClassSymbol if class is either defined in current compilation run or present on classpath. Returns NoSymbol otherwise.

Attributes

Get a List of ClassSymbols which are either defined in current compilation run or present on classpath.

Get a List of ClassSymbols which are either defined in current compilation run or present on classpath.

Attributes

Get module symbol if the module is either defined in current compilation run or present on classpath. Returns NoSymbol otherwise.

Get module symbol if the module is either defined in current compilation run or present on classpath. Returns NoSymbol otherwise.

Attributes

Get ClassSymbol if package is either defined in current compilation run or present on classpath. Returns NoSymbol otherwise.

Get ClassSymbol if package is either defined in current compilation run or present on classpath. Returns NoSymbol otherwise.

Attributes

def mapSymbols(originals: List[Symbol], ttmap: TreeTypeMap, mapAlways: Boolean)(using Context): List[Symbol]

Map given symbols, subjecting their attributes to the mappings defined in the given TreeTypeMap ttmap. Cross symbol references are brought over from originals to copies. Do not copy any symbols if all attributes of all symbols stay the same.

Map given symbols, subjecting their attributes to the mappings defined in the given TreeTypeMap ttmap. Cross symbol references are brought over from originals to copies. Do not copy any symbols if all attributes of all symbols stay the same.

Attributes

def newAnonFun(owner: Symbol, info: Type, coord: Coord)(using Context): TermSymbol

Create an anonymous function symbol

Create an anonymous function symbol

Attributes

def newClassSymbol(owner: Symbol, name: TypeName, flags: FlagSet, infoFn: ClassSymbol => Type, privateWithin: Symbol, coord: Coord, assocFile: AbstractFile | Null)(using Context): ClassSymbol

Create a class symbol from its non-info fields and a function producing its info (the produced info may be lazy).

Create a class symbol from its non-info fields and a function producing its info (the produced info may be lazy).

Attributes

def newCompleteClassSymbol(owner: Symbol, name: TypeName, flags: FlagSet, parents: List[TypeRef], decls: Scope, selfInfo: Type, privateWithin: Symbol, coord: Coord, assocFile: AbstractFile | Null)(using Context): ClassSymbol

Create a class symbol from its non-info fields and the fields of its info.

Create a class symbol from its non-info fields and the fields of its info.

Attributes

def newCompleteModuleSymbol(owner: Symbol, name: TermName, modFlags: FlagSet, clsFlags: FlagSet, parents: List[TypeRef], decls: Scope, privateWithin: Symbol, coord: Coord, assocFile: AbstractFile | Null)(using Context): TermSymbol

Create a module symbol with associated module class from its non-info fields and the fields of the module class info.

Create a module symbol with associated module class from its non-info fields and the fields of the module class info.

Value parameters

flags

The combined flags of the module and the module class These are masked with RetainedModuleValFlags/RetainedModuleClassFlags.

Attributes

def newCompletePackageSymbol(owner: Symbol, name: TermName, modFlags: FlagSet, clsFlags: FlagSet, decls: Scope)(using Context): TermSymbol

Create a package symbol with associated package class from its non-info fields its member scope.

Create a package symbol with associated package class from its non-info fields its member scope.

Attributes

def newConstructor(cls: ClassSymbol, flags: FlagSet, paramNames: List[TermName], paramTypes: List[Type], privateWithin: Symbol, coord: Coord)(using Context): TermSymbol

Create a class constructor symbol for given class cls.

Create a class constructor symbol for given class cls.

Attributes

Create an empty default constructor symbol for given class cls.

Create an empty default constructor symbol for given class cls.

Attributes

def newErrorSymbol(owner: Symbol, name: Name, msg: Message)(using Context): Symbol
def newImportSymbol(owner: Symbol, expr: Tree, coord: Coord)(using Context): TermSymbol

Create an import symbol pointing back to given qualifier expr.

Create an import symbol pointing back to given qualifier expr.

Attributes

def newImportSymbol(owner: Symbol, info: Type, coord: Coord)(using Context): TermSymbol

Create an import symbol with given info.

Create an import symbol with given info.

Attributes

def newLazyImplicit(info: Type, coord: Coord)(using Context): TermSymbol
def newLocalDummy(cls: Symbol, coord: Coord)(using Context): TermSymbol

Create the local template dummy of given class cls. In a template

Create the local template dummy of given class cls. In a template

trait T { val fld: Int; { val x: int = 2 }; val fld2 = { val y = 2; y }}

the owner of x is the local dummy of the template. The owner of the local dummy is then the class of the template itself. By contrast, the owner of y would be fld2. There is a single local dummy per template.

Attributes

def newModuleSymbol(owner: Symbol, name: TermName, modFlags: FlagSet, clsFlags: FlagSet, infoFn: (TermSymbol, ClassSymbol) => Type, privateWithin: Symbol, coord: Coord, assocFile: AbstractFile | Null)(using Context): TermSymbol

Create a module symbol with associated module class from its non-info fields and a function producing the info of the module class (this info may be lazy).

Create a module symbol with associated module class from its non-info fields and a function producing the info of the module class (this info may be lazy).

Attributes

def newNormalizedClassSymbol(owner: Symbol, name: TypeName, flags: FlagSet, parentTypes: List[Type], selfInfo: Type, privateWithin: Symbol, coord: Coord, assocFile: AbstractFile | Null)(using Context): ClassSymbol

Same as newCompleteClassSymbol except that parents can be a list of arbitrary types which get normalized into type refs and parameter bindings.

Same as newCompleteClassSymbol except that parents can be a list of arbitrary types which get normalized into type refs and parameter bindings.

Attributes

def newNormalizedModuleSymbol(owner: Symbol, name: TermName, modFlags: FlagSet, clsFlags: FlagSet, parentTypes: List[Type], decls: Scope, privateWithin: Symbol, coord: Coord, assocFile: AbstractFile | Null)(using Context): TermSymbol

Same as newCompleteModuleSymbol except that parents can be a list of arbitrary types which get normalized into type refs and parameter bindings.

Same as newCompleteModuleSymbol except that parents can be a list of arbitrary types which get normalized into type refs and parameter bindings.

Attributes

def newPackageSymbol(owner: Symbol, name: TermName, infoFn: (TermSymbol, ClassSymbol) => LazyType)(using Context): TermSymbol

Create a package symbol with associated package class from its non-info fields and a lazy type for loading the package's members.

Create a package symbol with associated package class from its non-info fields and a lazy type for loading the package's members.

Attributes

def newPatternBoundSymbol(name: Name, info: Type, span: Span, addToGadt: Boolean, flags: FlagSet)(using Context): Symbol

Define a new symbol associated with a Bind or pattern wildcard and, by default, make it gadt narrowable.

Define a new symbol associated with a Bind or pattern wildcard and, by default, make it gadt narrowable.

Attributes

def newSelfSym(cls: ClassSymbol, name: TermName, selfInfo: Type)(using Context): TermSymbol

Create a symbol representing a selftype declaration for class cls.

Create a symbol representing a selftype declaration for class cls.

Attributes

def newSkolem(tp: Type)(using Context): TermSymbol

Create a new skolem symbol. This is not the same as SkolemType, even though the motivation (create a singleton referencing to a type) is similar.

Create a new skolem symbol. This is not the same as SkolemType, even though the motivation (create a singleton referencing to a type) is similar.

Attributes

def newStubSymbol(owner: Symbol, name: Name, file: AbstractFile | Null)(using Context): Symbol

Create a stub symbol that will issue a missing reference error when attempted to be completed.

Create a stub symbol that will issue a missing reference error when attempted to be completed.

Attributes

def newSymbol[N <: Name](using Context)(owner: Symbol, name: N, flags: FlagSet, info: Type, privateWithin: Symbol, coord: Coord, nestingLevel: Int): Symbol { type ThisName = N; }

Create a symbol from its fields (info may be lazy)

Create a symbol from its fields (info may be lazy)

Attributes

def newTypeParams(owner: Symbol, names: List[TypeName], flags: FlagSet, boundsFn: List[TypeRef] => List[Type])(using Context): List[TypeSymbol]

Create new type parameters with given owner, names, and flags.

Create new type parameters with given owner, names, and flags.

Value parameters

boundsFn

A function that, given type refs to the newly created parameters returns a list of their bounds.

Attributes

Concrete fields

val Ids: Key[Array[String]]

Tree attachment containing the identifiers in a tree as a sorted array

Tree attachment containing the identifiers in a tree as a sorted array

Attributes

Implicits

Implicits

implicit def eqSymbol: CanEqual[Symbol, Symbol]
implicit def toClassDenot(cls: ClassSymbol)(using Context): ClassDenotation

Makes all class denotation operations available on class symbols

Makes all class denotation operations available on class symbols

Attributes

implicit def toDenot(sym: Symbol)(using Context): SymDenotation

Makes all denotation operations available on symbols

Makes all denotation operations available on symbols

Attributes