summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--sources/scalac/transformer/Erasure.java9
1 files changed, 8 insertions, 1 deletions
diff --git a/sources/scalac/transformer/Erasure.java b/sources/scalac/transformer/Erasure.java
index 0a1e646c83..e78de5d343 100644
--- a/sources/scalac/transformer/Erasure.java
+++ b/sources/scalac/transformer/Erasure.java
@@ -318,7 +318,7 @@ public class Erasure extends GenTransformer implements Modifiers {
else
return coerce(convert(tree, to), pt);
} else if (isUnboxedArrayType(tree.type())) {
- if (!isUnboxedArrayType(pt)) return coerce(box(tree), pt);
+ if (!isUnboxedArrayType(pt)) return check(box(tree), pt);
} else if (isUnboxedSimpleType(pt)) {
Type from = tree.type().erasure();
if (isUnboxedSimpleType(from))
@@ -335,6 +335,13 @@ public class Erasure extends GenTransformer implements Modifiers {
return gen.mkAsInstanceOf(tree, pt);
}
+ /** Checks that the given tree is of the given type. */
+ private Tree check(Tree tree, Type pt) {
+ assert isSubType(tree.type(), pt): tree +" - "+ tree.type() +" - "+pt;
+ return tree;
+ }
+
+
/** Boxes the given tree. */
private Tree box(Tree tree) {
return box(tree, false);