summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAdriaan Moors <adriaan@lightbend.com>2017-02-23 12:05:21 -0800
committerAdriaan Moors <adriaan@lightbend.com>2017-04-06 18:13:19 -0700
commit79a7015ae1753328203cef5105f44423505446f1 (patch)
treeb399d3c49b5f07ecbcf18eb834a4e01e5167743d
parentc04bcdc6dedf3e4cf3e6a608a66978841abc6171 (diff)
downloadscala-79a7015ae1753328203cef5105f44423505446f1.tar.gz
scala-79a7015ae1753328203cef5105f44423505446f1.tar.bz2
scala-79a7015ae1753328203cef5105f44423505446f1.zip
Clean up copyMethodCompleter, capture less
-rw-r--r--src/compiler/scala/tools/nsc/typechecker/Namers.scala16
1 files changed, 8 insertions, 8 deletions
diff --git a/src/compiler/scala/tools/nsc/typechecker/Namers.scala b/src/compiler/scala/tools/nsc/typechecker/Namers.scala
index e8eb19c52b..355d7cba30 100644
--- a/src/compiler/scala/tools/nsc/typechecker/Namers.scala
+++ b/src/compiler/scala/tools/nsc/typechecker/Namers.scala
@@ -600,12 +600,10 @@ trait Namers extends MethodSynthesis {
}
def copyMethodCompleter(copyDef: DefDef): TypeCompleter = {
- val sym = copyDef.symbol
- val lazyType = completerOf(copyDef)
-
/* Assign the types of the class parameters to the parameters of the
- * copy method. See comment in `Unapplies.caseClassCopyMeth` */
- def assignParamTypes() {
+ * copy method. See comment in `Unapplies.caseClassCopyMeth`
+ */
+ def assignParamTypes(copyDef: DefDef, sym: Symbol) {
val clazz = sym.owner
val constructorType = clazz.primaryConstructor.tpe
val subst = new SubstSymMap(clazz.typeParams, copyDef.tparams map (_.symbol))
@@ -618,9 +616,11 @@ trait Namers extends MethodSynthesis {
)
}
- mkTypeCompleter(copyDef) { sym =>
- assignParamTypes()
- lazyType complete sym
+ new CompleterWrapper(completerOf(copyDef)) {
+ override def complete(sym: Symbol): Unit = {
+ assignParamTypes(tree.asInstanceOf[DefDef], sym)
+ super.complete(sym)
+ }
}
}