From afad090d66ff565c856a231f6ae42dd70f75b2fc Mon Sep 17 00:00:00 2001 From: Adriaan Moors Date: Thu, 6 Apr 2017 16:08:28 -0700 Subject: Use CompleterWrapper for implicitFactoryMethodCompleter mkTypeCompleter is not suitable for wrapping potentially polymorphic completers --- src/compiler/scala/tools/nsc/typechecker/Namers.scala | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) (limited to 'src/compiler/scala/tools/nsc/typechecker/Namers.scala') diff --git a/src/compiler/scala/tools/nsc/typechecker/Namers.scala b/src/compiler/scala/tools/nsc/typechecker/Namers.scala index 355d7cba30..bce55a3e31 100644 --- a/src/compiler/scala/tools/nsc/typechecker/Namers.scala +++ b/src/compiler/scala/tools/nsc/typechecker/Namers.scala @@ -869,13 +869,14 @@ trait Namers extends MethodSynthesis { import AnnotationInfo.{mkFilter => annotationFilter} - def implicitFactoryMethodCompleter(tree: DefDef, classSym: Symbol, sigCompleter: LockingTypeCompleter) = mkTypeCompleter(tree) { methSym => - sigCompleter.completeImpl(methSym) + def implicitFactoryMethodCompleter(tree: DefDef, classSym: Symbol) = new CompleterWrapper(completerOf(tree)) { + override def complete(methSym: Symbol): Unit = { + super.complete(methSym) + val annotations = classSym.initialize.annotations - val annotations = classSym.initialize.annotations - - methSym setAnnotations (annotations filter annotationFilter(MethodTargetClass, defaultRetention = false)) - classSym setAnnotations (annotations filter annotationFilter(ClassTargetClass, defaultRetention = true)) + methSym setAnnotations (annotations filter annotationFilter(MethodTargetClass, defaultRetention = false)) + classSym setAnnotations (annotations filter annotationFilter(ClassTargetClass, defaultRetention = true)) + } } // complete the type of a value definition (may have a method symbol, for those valdefs that never receive a field, -- cgit v1.2.3