From c396e965f1954cb899a1f6ae55ccae1c78284a18 Mon Sep 17 00:00:00 2001 From: Adriaan Moors Date: Thu, 16 Feb 2017 14:43:58 -0800 Subject: Ignore BoundedWildcardType in erasure type map This case can be triggered as illustrated in the test. --- src/reflect/scala/reflect/internal/transform/Erasure.scala | 5 +++++ 1 file changed, 5 insertions(+) (limited to 'src') 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) } -- cgit v1.2.3