summaryrefslogtreecommitdiff
path: root/src/compiler
diff options
context:
space:
mode:
authorMartin Odersky <odersky@gmail.com>2009-12-17 18:16:47 +0000
committerMartin Odersky <odersky@gmail.com>2009-12-17 18:16:47 +0000
commitd5f0ed310e475718492e34778d6b2a7b50f67669 (patch)
treeea3f205f657488dac91be70f74230ea65081356e /src/compiler
parent248a992059f090070a01a9c98271753c84df8319 (diff)
downloadscala-d5f0ed310e475718492e34778d6b2a7b50f67669.tar.gz
scala-d5f0ed310e475718492e34778d6b2a7b50f67669.tar.bz2
scala-d5f0ed310e475718492e34778d6b2a7b50f67669.zip
Another fix for the build problem with r20203.
Diffstat (limited to 'src/compiler')
-rw-r--r--src/compiler/scala/tools/nsc/typechecker/Implicits.scala9
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