diff options
author | Adriaan Moors <adriaan.moors@typesafe.com> | 2014-02-05 12:34:10 -0800 |
---|---|---|
committer | Adriaan Moors <adriaan.moors@typesafe.com> | 2014-02-05 12:48:55 -0800 |
commit | 715a39bdf6a4632ec09b74777975ee90068b4466 (patch) | |
tree | c8fb6e507fb2282740590de12fb16fc1a2bdbda4 /src | |
parent | 4525e3392b42b47147479087d961d328c3b717bb (diff) | |
download | scala-715a39bdf6a4632ec09b74777975ee90068b4466.tar.gz scala-715a39bdf6a4632ec09b74777975ee90068b4466.tar.bz2 scala-715a39bdf6a4632ec09b74777975ee90068b4466.zip |
SI-6169 more accurate check for raw java type encoded as existential
Diffstat (limited to 'src')
-rw-r--r-- | src/reflect/scala/reflect/internal/Types.scala | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/src/reflect/scala/reflect/internal/Types.scala b/src/reflect/scala/reflect/internal/Types.scala index a49ecea57f..02f51c2562 100644 --- a/src/reflect/scala/reflect/internal/Types.scala +++ b/src/reflect/scala/reflect/internal/Types.scala @@ -2668,7 +2668,13 @@ trait Types * but that causes cyclic errors because it happens too early.) */ private def sharpenQuantifierBounds(): Unit = { - if (underlying.typeSymbol.isJavaDefined && quantified == underlying.typeArgs.map(_.typeSymbol)) { + /* Check that we're looking at rawToExistential's handiwork + * (`existentialAbstraction(eparams, typeRef(apply(pre), sym, eparams map (_.tpe)))`). + * We can't do this sharpening there because we'll run into cycles. + */ + def rawToExistentialCreatedMe = (quantified corresponds underlying.typeArgs){ (q, a) => q.tpe =:= a } + + if (underlying.typeSymbol.isJavaDefined && rawToExistentialCreatedMe) { val tpars = underlying.typeSymbol.typeParams debuglog(s"sharpen bounds: $this | ${underlying.typeArgs.map(_.typeSymbol)} <-- ${tpars.map(_.info)}") |