abstract class Namer extends Analyzer.MethodSynth with Analyzer.NamerContextErrors
- Alphabetic
- By Inheritance
- Namer
- NamerContextErrors
- MethodSynth
- AnyRef
- Any
- by any2stringadd
- by StringFormat
- by Ensuring
- by ArrowAssoc
- Hide All
- Show All
- Public
- All
Instance Constructors
- new Namer(context: Analyzer.Context)
Type Members
-
trait
DerivedAccessor extends AnyRef
- Definition Classes
- MethodSynth
-
case class
Getter(tree: Global.ValDef) extends Namers.Namer.DerivedAccessor with Product with Serializable
- Definition Classes
- MethodSynth
-
case class
Setter(tree: Global.ValDef) extends Namers.Namer.DerivedAccessor with Product with Serializable
- Definition Classes
- MethodSynth
- class AccessorTypeCompleter extends Analyzer.TypeCompleterBase[Global.ValDef]
- class ImportTypeCompleter extends Analyzer.TypeCompleterBase[Global.Import]
- class LogTransitions[S] extends AnyRef
- class ModuleClassTypeCompleter extends Analyzer.TypeCompleterBase[Global.ModuleDef]
- class MonoTypeCompleter extends Analyzer.TypeCompleterBase[Global.MemberDef]
- class SelfTypeCompleter extends Analyzer.TypeCompleterBase[Global.Tree]
- class ValTypeCompleter extends Analyzer.TypeCompleterBase[Global.ValDef]
Value Members
-
object
NamerErrorGen
- Definition Classes
- NamerContextErrors
- def accessorTypeCompleter(valDef: Global.ValDef, missingTpt: Boolean, isBean: Boolean, isSetter: Boolean): AccessorTypeCompleter
-
def
addApplyUnapply(cdef: Global.ClassDef, namer: Analyzer.Namer): Unit
Given a case class case class C[Ts] (ps: Us) Add the following methods to toScope:
Given a case class case class C[Ts] (ps: Us) Add the following methods to toScope:
- if case class is not abstract, add <synthetic> <case> def apply[Ts](ps: Us): C[Ts] = new C[Ts](ps) 2. add a method <synthetic> <case> def unapply[Ts](x: C[Ts]) = <ret-val> where <ret-val> is the caseClassUnapplyReturnValue of class C (see UnApplies.scala)
- cdef
is the class definition of the case class
- namer
is the namer of the module class (the comp. obj)
- def addCopyMethod(cdef: Global.ClassDef, namer: Analyzer.Namer): Unit
- def annotSig(annotations: List[Global.Tree]): List[Global.AnnotationInfo]
- def applicableTypeParams(owner: Global.Symbol): List[Global.Symbol]
- def applyUnapplyMethodCompleter(un_applyDef: Global.DefDef, companionContext: Analyzer.Context): Analyzer.TypeCompleter
- def assignAndEnterFinishedSymbol(tree: Global.MemberDef): Global.Symbol
- def assignMemberSymbol(tree: Global.MemberDef, mask: Long = -1L): Global.Symbol
- def completerOf(tree: Global.MemberDef): Analyzer.TypeCompleter
- val context: Analyzer.Context
- def contextFile: AbstractFile
- def copyMethodCompleter(copyDef: Global.DefDef): Analyzer.TypeCompleter
- def createImportSymbol(tree: Global.Import): Global.TermSymbol
- def createInnerNamer(): Analyzer.Namer
-
def
createMemberSymbol(tree: Global.MemberDef, name: Global.Name, mask: Long): Global.Symbol
Create a new symbol at the context owner based on the given tree.
Create a new symbol at the context owner based on the given tree. A different name can be given. If the modifier flags should not be be transferred to the symbol as they are, supply a mask containing the flags to keep.
- def createMethod(accessQual: Global.MemberDef, name: Global.TermName, pos: Global.Position, flags: Long): Global.MethodSymbol
- def createNamer(tree: Global.Tree): Analyzer.Namer
-
def
createPackageSymbol(pos: Global.Position, pid: Global.RefTree): Global.Symbol
All PackageClassInfoTypes come from here.
- def createPrimaryConstructorParameterNamer: Analyzer.Namer
- def deriveAccessors(vd: Global.ValDef): Boolean
- def enclosingNamerWithScope(scope: Global.Scope): Analyzer.Namer
-
def
ensureCompanionObject(cdef: Global.ClassDef, creator: (Global.ClassDef) ⇒ Global.Tree = companionModuleDef(_)): Global.Symbol
If no companion object for clazz exists yet, create one by applying
creator
to class definition tree.If no companion object for clazz exists yet, create one by applying
creator
to class definition tree.- returns
the companion object symbol.
- def enterClassDef(tree: Global.ClassDef): Unit
- def enterClassSymbol(tree: Global.ClassDef): Global.Symbol
- def enterDefDef(tree: Global.DefDef): Unit
- def enterExistingSym(sym: Global.Symbol, tree: Global.Tree): Analyzer.Context
-
def
enterGetterSetter(tree: Global.ValDef): Unit
- Definition Classes
- MethodSynth
- def enterIfNotThere(sym: Global.Symbol): Unit
-
def
enterImplicitWrapper(classDef: Global.ClassDef): Unit
- Definition Classes
- MethodSynth
-
def
enterInScope(sym: Global.Symbol, scope: Global.Scope): Global.Symbol
Enter symbol into given scope and return symbol itself
-
def
enterInScope(sym: Global.Symbol): Global.Symbol
Enter symbol into context's scope and return symbol itself
- def enterModuleDef(tree: Global.ModuleDef): Global.Symbol
-
def
enterModuleSymbol(tree: Global.ModuleDef): Global.Symbol
Enter a module symbol.
- def enterPackage(tree: Global.PackageDef): Unit
- def enterSelf(self: Global.ValDef): Unit
- def enterSym(tree: Global.Tree): Analyzer.Context
- def enterSyms(trees: List[Global.Tree]): Analyzer.Namer
- def enterSyntheticSym(tree: Global.Tree): Global.Symbol
- def enterTypeDef(tree: Global.TypeDef): Global.Symbol
- def enterValDef(tree: Global.ValDef): Unit
- def enterValueParams(vparamss: List[List[Global.ValDef]]): List[List[Global.Symbol]]
- def findCyclicalLowerBound(tp: Global.Type): Global.Symbol
-
def
handleSyntheticNameConflict(sym1: Global.Symbol, sym2: Global.Symbol): Unit
Logic to handle name conflicts of synthetically generated symbols We handle right now: t6227
- def implicitFactoryMethodCompleter(tree: Global.DefDef, classSym: Global.Symbol): Analyzer.CompleterWrapper
- def importTypeCompleter(tree: Global.Import): ImportTypeCompleter
- def inConstructorFlag: Long
- def includeParent(tpe: Global.Type, parent: Global.Symbol): Global.Type
-
def
isEnumConstant(vd: Global.ValDef): Boolean
Determines whether this field holds an enum constant.
Determines whether this field holds an enum constant. To qualify, the following conditions must be met:
- The field's class has the ENUM flag set
- The field's class extends java.lang.Enum
- The field has the ENUM flag set
- The field is static
- The field is stable
- def moduleClassFlags(moduleFlags: Long): Long
- def moduleClassTypeCompleter(tree: Global.ModuleDef): ModuleClassTypeCompleter
- def monoTypeCompleter(tree: Global.MemberDef): MonoTypeCompleter
- def namerOf(sym: Global.Symbol): Analyzer.Namer
- def saveDefaultGetter(meth: Global.Symbol, default: Global.Symbol): Unit
- def selfTypeCompleter(tree: Global.Tree): SelfTypeCompleter
- def setPrivateWithin(tree: Global.MemberDef, sym: Global.Symbol): Global.Symbol
- def setPrivateWithin[T <: Global.Symbol](tree: Global.Tree, sym: T, mods: Global.Modifiers): T
-
def
standardEnsureCompanionObject(cdef: Global.ClassDef, creator: (Global.ClassDef) ⇒ Global.Tree = companionModuleDef(_)): Global.Symbol
Default implementation of
ensureCompanionObject
.Default implementation of
ensureCompanionObject
. Can be overridden by analyzer plugins (see AnalyzerPlugins.pluginsEnsureCompanionObject for more details) -
def
standardEnterSym(tree: Global.Tree): Analyzer.Context
Default implementation of
enterSym
.Default implementation of
enterSym
. Can be overridden by analyzer plugins (see AnalyzerPlugins.pluginsEnterSym for more details) - def typeErrorHandler[T](tree: Global.Tree, alt: T): PartialFunction[Throwable, T]
-
def
typeSig(tree: Global.Tree, annotSigs: List[Global.AnnotationInfo]): Global.Type
TypeSig is invoked by monoTypeCompleters.
TypeSig is invoked by monoTypeCompleters. It returns the type of a definition which is then assigned to the corresponding symbol (typeSig itself does not need to assign the type to the symbol, but it can if necessary).
- val typer: Analyzer.Typer
- def updatePosFlags(sym: Global.Symbol, pos: Global.Position, flags: Long): Global.Symbol
- def valTypeCompleter(tree: Global.ValDef): ValTypeCompleter
-
def
validate(sym: Global.Symbol): Unit
Check that symbol's definition is well-formed.
Check that symbol's definition is well-formed. This means:
- no conflicting modifiers
abstract
modifier only for classesoverride
modifier never for classesdef
modifier never for parameters of case classes- declarations only in mixins or abstract classes (when not @native)
-
def
validateCompanionDefs(tree: Global.ImplDef): Unit
Given a ClassDef or ModuleDef, verifies there isn't a companion which has been defined in a separate file.
The Scala compiler and reflection APIs.