diff options
author | Martin Odersky <odersky@gmail.com> | 2009-12-17 18:16:47 +0000 |
---|---|---|
committer | Martin Odersky <odersky@gmail.com> | 2009-12-17 18:16:47 +0000 |
commit | d5f0ed310e475718492e34778d6b2a7b50f67669 (patch) | |
tree | ea3f205f657488dac91be70f74230ea65081356e | |
parent | 248a992059f090070a01a9c98271753c84df8319 (diff) | |
download | scala-d5f0ed310e475718492e34778d6b2a7b50f67669.tar.gz scala-d5f0ed310e475718492e34778d6b2a7b50f67669.tar.bz2 scala-d5f0ed310e475718492e34778d6b2a7b50f67669.zip |
Another fix for the build problem with r20203.
-rw-r--r-- | src/compiler/scala/tools/nsc/typechecker/Implicits.scala | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/src/compiler/scala/tools/nsc/typechecker/Implicits.scala b/src/compiler/scala/tools/nsc/typechecker/Implicits.scala index eea0835144..707c91e6ad 100644 --- a/src/compiler/scala/tools/nsc/typechecker/Implicits.scala +++ b/src/compiler/scala/tools/nsc/typechecker/Implicits.scala @@ -771,11 +771,14 @@ self: Analyzer => else if (sym.isTypeParameterOrSkolem) EmptyTree // a manifest should have been found by normal searchImplicit else { - val era = erasure.erasure(tp1) - val base = tp1.baseType(era.typeSymbol) + // the following is tricky! We want to find the parameterized version of + // what will become the erasure of the upper bound. + var era = erasure.erasure(tp1) + if (era.typeSymbol.typeParams.nonEmpty) + era = tp1.baseType(era.typeSymbol) manifestFactoryCall( "abstractType", tp, - findSubManifest(pre) :: Literal(sym.name.toString) :: gen.mkClassOf(base) :: (args map findSubManifest): _*) + findSubManifest(pre) :: Literal(sym.name.toString) :: gen.mkClassOf(era) :: (args map findSubManifest): _*) } } else { EmptyTree // a manifest should have been found by normal searchImplicit |