diff options
author | Adriaan Moors <adriaan@lightbend.com> | 2017-02-16 14:43:58 -0800 |
---|---|---|
committer | Adriaan Moors <adriaan@lightbend.com> | 2017-02-19 15:02:54 -0800 |
commit | c396e965f1954cb899a1f6ae55ccae1c78284a18 (patch) | |
tree | 3a5f9a539e9280becb5ebe4a1a1d850c05e46544 /src/reflect | |
parent | 2fec08b02a5b1c27dc7e41a7b72dbb112e042d06 (diff) | |
download | scala-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')
-rw-r--r-- | src/reflect/scala/reflect/internal/transform/Erasure.scala | 5 |
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) } |