Dotty Documentation

0.4.0-bin-SNAPSHOT

trait Symbols

Creation methods for symbols

[-] Constructors

[-] Members

[+] val companionMethodFlags : FlagSet
[+] def getClassIfDefined ( path: PreName ) : Symbol

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

[+] def mapSymbols ( originals: List [ Symbol ] , ttmap: TreeTypeMap , mapAlways: Boolean ) : 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.

[+] def newClassSymbol ( owner: Symbol , name: TypeName , flags: FlagSet , infoFn: ClassSymbol => Type , privateWithin: Symbol , coord: Coord , assocFile: AbstractFile ) : ClassSymbol

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

[+] def newClassSymbolDenoting ( denotFn: ClassSymbol => SymDenotation , coord: Coord , assocFile: AbstractFile ) : ClassSymbol

Create a class symbol from a function producing its denotation

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

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

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

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

[+] def newCompletePackageSymbol ( owner: Symbol , name: TermName , modFlags: FlagSet , clsFlags: FlagSet , decls: Scope ) : TermSymbol

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

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

Create a class constructor symbol for given class cls.

[+] def newDefaultConstructor ( cls: ClassSymbol ) : Symbol

Create an empty default constructor symbol for given class cls.

[+] def newErrorSymbol ( owner: Symbol , name: Name , msg: => Message ) : Symbol
[+] def newImportSymbol ( owner: Symbol , expr: Tree , coord: Coord ) : Symbol

Create an import symbol pointing back to given qualifier expr.

[+] def newLazyImplicit ( info: Type ) : Symbol

Create a synthetic lazy implicit value

[+] def newLocalDummy ( cls: Symbol , coord: Coord ) : Symbol

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.

[+] def newModuleSymbol ( owner: Symbol , name: TermName , modFlags: FlagSet , clsFlags: FlagSet , infoFn: (TermSymbol, ClassSymbol) => Type , privateWithin: Symbol , coord: Coord , assocFile: AbstractFile ) : 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).

[+] def newNakedClassSymbol ( coord: Coord , assocFile: AbstractFile ) ( implicit ctx: Context ) : ClassSymbol

Create a class symbol without a denotation.

[+] def newNakedSymbol ( coord: Coord ) ( implicit ctx: Context ) : Symbol

Create a symbol without a denotation. Note this uses a cast instead of a direct type refinement because it's debug-friendlier not to create an anonymous class here.

[+] def newNormalizedClassSymbol ( owner: Symbol , name: TypeName , flags: FlagSet , parentTypes: List [ Type ] , decls: Scope , selfInfo: Type , privateWithin: Symbol , coord: Coord , assocFile: AbstractFile ) : ClassSymbol

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

[+] def newPackageSymbol ( owner: Symbol , name: TermName , infoFn: (TermSymbol, ClassSymbol) => LazyType ) : TermSymbol

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

[+] def newSelfSym ( cls: ClassSymbol , name: TermName , selfInfo: Type ) : TermSymbol

Create a symbol representing a selftype declaration for class cls.

[+] def newSkolem ( tp: Type ) : Symbol

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.

[+] def newStubSymbol ( owner: Symbol , name: Name , file: AbstractFile ) : Symbol

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

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

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

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

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

[+] def requiredClass ( path: PreName ) : ClassSymbol
[+] def requiredClassRef ( path: PreName ) : TypeRef
[+] def requiredModule ( path: PreName ) : TermSymbol
[+] def requiredModuleRef ( path: PreName ) : TermRef
[+] def requiredPackage ( path: PreName ) : TermSymbol
[+] def requiredPackageRef ( path: PreName ) : TermRef
[+] def synthesizeCompanionMethod ( name: Name , target: SymDenotation , owner: SymDenotation ) ( implicit ctx: Context ) : Symbol