summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorpaltherr <paltherr@epfl.ch>2003-11-17 18:06:11 +0000
committerpaltherr <paltherr@epfl.ch>2003-11-17 18:06:11 +0000
commit013b0ec7184b18ba6fdfe3e29eb77769cc9c763f (patch)
tree9c5f2ac208245b8767cde36f54d91f7932e08bbd
parent7beb013c4d0668ae7d08c554bcaf6e174ab41855 (diff)
downloadscala-013b0ec7184b18ba6fdfe3e29eb77769cc9c763f.tar.gz
scala-013b0ec7184b18ba6fdfe3e29eb77769cc9c763f.tar.bz2
scala-013b0ec7184b18ba6fdfe3e29eb77769cc9c763f.zip
- Added code for multibound arrays
-rw-r--r--sources/scalac/transformer/Erasure.java9
1 files changed, 9 insertions, 0 deletions
diff --git a/sources/scalac/transformer/Erasure.java b/sources/scalac/transformer/Erasure.java
index 831e4df9e9..572767a3dc 100644
--- a/sources/scalac/transformer/Erasure.java
+++ b/sources/scalac/transformer/Erasure.java
@@ -374,6 +374,11 @@ public class Erasure extends GenTransformer implements Modifiers {
case UnboxedType(int kind): return genNewUnboxedArray(pos, kind, size);
}
if (global.target == global.TARGET_INT) {
+ int levels = 0;
+ while (isUnboxedArrayType(element)) {
+ element = getArrayElementType(element);
+ levels++;
+ }
global.nextPhase();
while (true) {
Symbol clasz = element.symbol();
@@ -382,6 +387,10 @@ public class Erasure extends GenTransformer implements Modifiers {
element = element.parents()[0];
}
global.prevPhase();
+ while (levels > 0) {
+ element = Type.UnboxedArrayType(element);
+ levels--;
+ }
}
String name = primitives.getNameForClassForName(element);
Tree[] args = { coerce(size, UNBOXED_INT), gen.mkStringLit(pos,name) };