diff options
author | Adriaan Moors <adriaan@lightbend.com> | 2017-02-23 12:05:21 -0800 |
---|---|---|
committer | Adriaan Moors <adriaan@lightbend.com> | 2017-04-06 18:13:19 -0700 |
commit | 79a7015ae1753328203cef5105f44423505446f1 (patch) | |
tree | b399d3c49b5f07ecbcf18eb834a4e01e5167743d /src/compiler/scala/tools/nsc/typechecker | |
parent | c04bcdc6dedf3e4cf3e6a608a66978841abc6171 (diff) | |
download | scala-79a7015ae1753328203cef5105f44423505446f1.tar.gz scala-79a7015ae1753328203cef5105f44423505446f1.tar.bz2 scala-79a7015ae1753328203cef5105f44423505446f1.zip |
Clean up copyMethodCompleter, capture less
Diffstat (limited to 'src/compiler/scala/tools/nsc/typechecker')
-rw-r--r-- | src/compiler/scala/tools/nsc/typechecker/Namers.scala | 16 |
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) + } } } |