summaryrefslogtreecommitdiff
path: root/src/reflect/scala
diff options
context:
space:
mode:
authorAdriaan Moors <adriaan@lightbend.com>2017-02-16 14:43:58 -0800
committerAdriaan Moors <adriaan@lightbend.com>2017-02-19 15:02:54 -0800
commitc396e965f1954cb899a1f6ae55ccae1c78284a18 (patch)
tree3a5f9a539e9280becb5ebe4a1a1d850c05e46544 /src/reflect/scala
parent2fec08b02a5b1c27dc7e41a7b72dbb112e042d06 (diff)
downloadscala-c396e965f1954cb899a1f6ae55ccae1c78284a18.tar.gz
scala-c396e965f1954cb899a1f6ae55ccae1c78284a18.tar.bz2
scala-c396e965f1954cb899a1f6ae55ccae1c78284a18.zip
Ignore BoundedWildcardType in erasure type map
This case can be triggered as illustrated in the test.
Diffstat (limited to 'src/reflect/scala')
-rw-r--r--src/reflect/scala/reflect/internal/transform/Erasure.scala5
1 files changed, 5 insertions, 0 deletions
diff --git a/src/reflect/scala/reflect/internal/transform/Erasure.scala b/src/reflect/scala/reflect/internal/transform/Erasure.scala
index 24f8aa88e6..07ae71538c 100644
--- a/src/reflect/scala/reflect/internal/transform/Erasure.scala
+++ b/src/reflect/scala/reflect/internal/transform/Erasure.scala
@@ -161,6 +161,11 @@ trait Erasure {
}
if (newParents eq parents) tp
else ClassInfoType(newParents, decls, clazz)
+
+ // can happen while this map is being used before erasure (e.g. when reasoning about sam types)
+ // the regular mapOver will cause a class cast exception because TypeBounds don't erase to TypeBounds
+ case _: BoundedWildcardType => tp // skip
+
case _ =>
mapOver(tp)
}