diff options
author | Seth Tisue <seth@tisue.net> | 2017-04-11 16:57:35 -0500 |
---|---|---|
committer | GitHub <noreply@github.com> | 2017-04-11 16:57:35 -0500 |
commit | 12c240d69b6958d2c8f03a7728c097dd215011cd (patch) | |
tree | 3aaadab7e540adfffee171384271125e92d7c1e1 /src/compiler/scala/tools/nsc/typechecker/Namers.scala | |
parent | 15e2759f49a3ef0f71290f4bbd9839cbf2346b0e (diff) | |
parent | 2804c6316e9ad822fa7de45009f0fe4aed67ab7d (diff) | |
download | scala-12c240d69b6958d2c8f03a7728c097dd215011cd.tar.gz scala-12c240d69b6958d2c8f03a7728c097dd215011cd.tar.bz2 scala-12c240d69b6958d2c8f03a7728c097dd215011cd.zip |
Merge pull request #5844 from adriaanm/rework-5816
Revert some of ade53a123. Use completer factory methods.
Diffstat (limited to 'src/compiler/scala/tools/nsc/typechecker/Namers.scala')
-rw-r--r-- | src/compiler/scala/tools/nsc/typechecker/Namers.scala | 29 |
1 files changed, 15 insertions, 14 deletions
diff --git a/src/compiler/scala/tools/nsc/typechecker/Namers.scala b/src/compiler/scala/tools/nsc/typechecker/Namers.scala index fee56cfc13..bbb9d33140 100644 --- a/src/compiler/scala/tools/nsc/typechecker/Namers.scala +++ b/src/compiler/scala/tools/nsc/typechecker/Namers.scala @@ -105,7 +105,7 @@ trait Namers extends MethodSynthesis { def enterValueParams(vparamss: List[List[ValDef]]): List[List[Symbol]] = mmap(vparamss) { param => - enterInScope(assignMemberSymbol(param, mask = ValueParameterFlags)) setInfo new MonoTypeCompleter(param) + enterInScope(assignMemberSymbol(param, mask = ValueParameterFlags)) setInfo monoTypeCompleter(param) } protected def owner = context.owner @@ -337,10 +337,8 @@ trait Namers extends MethodSynthesis { } } - def createImportSymbol(tree: Import) = { - val importNamer = namerOf(tree.symbol) - NoSymbol.newImport(tree.pos) setInfo new importNamer.ImportTypeCompleter(tree) - } + def createImportSymbol(tree: Import) = + NoSymbol.newImport(tree.pos) setInfo (namerOf(tree.symbol) importTypeCompleter tree) /** All PackageClassInfoTypes come from here. */ def createPackageSymbol(pos: Position, pid: RefTree): Symbol = { @@ -430,8 +428,7 @@ trait Namers extends MethodSynthesis { def enterModuleDef(tree: ModuleDef) = { val sym = enterModuleSymbol(tree) - val mcsNamer = namerOf(sym) - sym.moduleClass setInfo new mcsNamer.ModuleClassTypeCompleter(tree) + sym.moduleClass setInfo namerOf(sym).moduleClassTypeCompleter(tree) sym setInfo completerOf(tree) validateCompanionDefs(tree) sym @@ -684,8 +681,7 @@ trait Namers extends MethodSynthesis { } def completerOf(tree: MemberDef): TypeCompleter = { - val treeNamer = namerOf(tree.symbol) - val mono = new treeNamer.MonoTypeCompleter(tree) + val mono = namerOf(tree.symbol) monoTypeCompleter tree val tparams = treeInfo.typeParameters(tree) if (tparams.isEmpty) mono else { @@ -1081,7 +1077,7 @@ trait Namers extends MethodSynthesis { val sym = ( if (hasType || hasName) { - owner.typeOfThis = if (hasType) new SelfTypeCompleter(tpt) else owner.tpe_* + owner.typeOfThis = if (hasType) selfTypeCompleter(tpt) else owner.tpe_* val selfSym = owner.thisSym setPos self.pos if (hasName) selfSym setName name else selfSym } @@ -1175,7 +1171,7 @@ trait Namers extends MethodSynthesis { val res = GenPolyType(tparams0, resultType) val pluginsTp = pluginsTypeSig(res, typer, cdef, WildcardType) - // Already assign the type to the class symbol (MonoTypeCompleter will do it again). + // Already assign the type to the class symbol (monoTypeCompleter will do it again). // Allows isDerivedValueClass to look at the info. clazz setInfo pluginsTp if (clazz.isDerivedValueClass) { @@ -1189,7 +1185,7 @@ trait Namers extends MethodSynthesis { private def moduleSig(mdef: ModuleDef): Type = { val moduleSym = mdef.symbol - // The info of both the module and the moduleClass symbols need to be assigned. MonoTypeCompleter assigns + // The info of both the module and the moduleClass symbols need to be assigned. monoTypeCompleter assigns // the result of typeSig to the module symbol. The module class info is assigned here as a side-effect. val result = templateSig(mdef.impl) val pluginsTp = pluginsTypeSig(result, typer, mdef, WildcardType) @@ -1589,7 +1585,7 @@ trait Namers extends MethodSynthesis { // (a val's name ends in a " ", so can't compare to def) val overridingSym = if (isGetter) vdef.symbol else vdef.symbol.getterIn(valOwner) - // We're called from an AccessorTypeCompleter, which is completing the info for the accessor's symbol, + // We're called from an accessorTypeCompleter, which is completing the info for the accessor's symbol, // which may or may not be `vdef.symbol` (see isGetter above) val overridden = safeNextOverriddenSymbol(overridingSym) @@ -1732,7 +1728,7 @@ trait Namers extends MethodSynthesis { } /** - * TypeSig is invoked by MonoTypeCompleters. It returns the type of a definition which + * 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). */ @@ -1923,6 +1919,11 @@ trait Namers extends MethodSynthesis { } } + @deprecated("Instantiate TypeCompleterBase (for monomorphic, non-wrapping completer) or CompleterWrapper directly.", "2.12.2") + def mkTypeCompleter(t: Tree)(c: Symbol => Unit) = new TypeCompleterBase(t) { + def completeImpl(sym: Symbol) = c(sym) + } + // NOTE: only meant for monomorphic definitions, // do not use to wrap existing completers (see CompleterWrapper for that) abstract class TypeCompleterBase[T <: Tree](val tree: T) extends LockingTypeCompleter with FlagAgnosticCompleter |