summaryrefslogtreecommitdiff
path: root/sources/scalac/transformer/Erasure.java
diff options
context:
space:
mode:
authorpaltherr <paltherr@epfl.ch>2003-03-14 10:26:55 +0000
committerpaltherr <paltherr@epfl.ch>2003-03-14 10:26:55 +0000
commit68e734d000dfbea805c752a20c473121039a8c97 (patch)
tree4c3fef5a1cf9f506af941915e78e3fa603cfa539 /sources/scalac/transformer/Erasure.java
parent23f2da861524eb4bbe34429207f171d0e93d9e9c (diff)
downloadscala-68e734d000dfbea805c752a20c473121039a8c97.tar.gz
scala-68e734d000dfbea805c752a20c473121039a8c97.tar.bz2
scala-68e734d000dfbea805c752a20c473121039a8c97.zip
- Fixed erasure of new arrays
Diffstat (limited to 'sources/scalac/transformer/Erasure.java')
-rw-r--r--sources/scalac/transformer/Erasure.java23
1 files changed, 13 insertions, 10 deletions
diff --git a/sources/scalac/transformer/Erasure.java b/sources/scalac/transformer/Erasure.java
index 62181f920f..552404eaa9 100644
--- a/sources/scalac/transformer/Erasure.java
+++ b/sources/scalac/transformer/Erasure.java
@@ -378,20 +378,23 @@ public class Erasure extends Transformer implements Modifiers {
if (tree.type.symbol() == definitions.UNIT_CLASS)
// !!! return Tree.Literal(UNIT, null).setType(owntype);
throw Debug.abort("found unit literal");
- switch (owntype) {
- case UnboxedArrayType(Type elemtp):
- Tree apply = transform(templ.parents[0]);
- switch (apply) {
+ if (tree.type.symbol() == definitions.ARRAY_CLASS) {
+ switch (templ.parents[0]) {
case Apply(_, Tree[] args):
- assert args.length == 1;
- switch (elemtp) {
- case UnboxedType(int kind):
- return genNewArray(tree.pos,args[0],kind);
+ args = transform(args);
+ switch (owntype) {
+ case UnboxedArrayType(Type elemtp):
+ switch (elemtp) {
+ case UnboxedType(int kind):
+ return genNewArray(tree.pos,args[0],kind);
+ default:
+ return genNewArray(tree.pos,args[0],elemtp);
+ }
default:
- return genNewArray(tree.pos,args[0],elemtp);
+ throw Debug.abort("illegal case", owntype);
}
default:
- throw Debug.abort("illegal case", apply);
+ throw Debug.abort("illegal case", templ.parents[0]);
}
}
return super.transform(tree).setType(owntype);