scala.tools.nsc.typechecker.Namers
This trait assembles what's needed for synthesizing derived methods.
A synthetic method which performs the implicit conversion implied by the declaration of an implicit class.
Implements lazy value accessors:
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:
is the class definition of the case class
is the namer of the module class (the comp. obj)
Creates a new symbol and assigns it to the tree, returning the 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.
All PackageClassInfoTypes come from here.
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.
the companion object symbol.
Enter symbol into given scope and return symbol itself
Enter symbol into context's scope and return symbol itself
Enter a module symbol.
Logic to handle name conflicts of synthetically generated symbols We handle right now: t6227
Determines whether this field holds an enum constant.
Determines whether this field holds an enum constant. To qualify, the following conditions must be met:
Default implementation of ensureCompanionObject
.
Default implementation of ensureCompanionObject
.
Can be overridden by analyzer plugins (see AnalyzerPlugins.pluginsEnsureCompanionObject for more details)
Default implementation of enterSym
.
Default implementation of enterSym
.
Can be overridden by analyzer plugins (see AnalyzerPlugins.pluginsEnterSym for more details)
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).
Check that symbol's definition is well-formed.
Check that symbol's definition is well-formed. This means:
abstract
modifier only for classesoverride
modifier never for classesdef
modifier never for parameters of case classesGiven a ClassDef or ModuleDef, verifies there isn't a companion which has been defined in a separate file.