summaryrefslogtreecommitdiff
path: root/sources
diff options
context:
space:
mode:
authorpaltherr <paltherr@epfl.ch>2004-03-16 10:14:08 +0000
committerpaltherr <paltherr@epfl.ch>2004-03-16 10:14:08 +0000
commitb5d1f0a2f4b0d2e871f8a0e0a40a88e99d78e6c2 (patch)
tree7661f599854891b0bb9bf08bb93fbddd991f9027 /sources
parent4b1688cfd44761fa2e35fed783da9d705c2561c0 (diff)
downloadscala-b5d1f0a2f4b0d2e871f8a0e0a40a88e99d78e6c2.tar.gz
scala-b5d1f0a2f4b0d2e871f8a0e0a40a88e99d78e6c2.tar.bz2
scala-b5d1f0a2f4b0d2e871f8a0e0a40a88e99d78e6c2.zip
- Fixed array creation code (never create array...
- Fixed array creation code (never create arrays of proxy class)
Diffstat (limited to 'sources')
-rw-r--r--sources/scala/tools/scalai/ExpressionCompiler.java3
-rw-r--r--sources/scala/tools/scalai/JavaMirror.java2
2 files changed, 4 insertions, 1 deletions
diff --git a/sources/scala/tools/scalai/ExpressionCompiler.java b/sources/scala/tools/scalai/ExpressionCompiler.java
index cfeebfd1a3..871001cd0e 100644
--- a/sources/scala/tools/scalai/ExpressionCompiler.java
+++ b/sources/scala/tools/scalai/ExpressionCompiler.java
@@ -242,7 +242,8 @@ public class ExpressionCompiler {
assert object == Code.Null: object;
assert targs.length == 1: Debug.show(targs);
assert vargs.length == 1 : Debug.show(vargs);
- Class component = context.getClass(targs[0].type());
+ Type arraytype = Type.UnboxedArrayType(targs[0].type());
+ Class component = context.getClass(arraytype).getComponentType();
return Code.CreateArray(component, compute(vargs[0]));
}
throw Debug.abort("unknown method", symbol);
diff --git a/sources/scala/tools/scalai/JavaMirror.java b/sources/scala/tools/scalai/JavaMirror.java
index fe392ed2cd..004bb44c3d 100644
--- a/sources/scala/tools/scalai/JavaMirror.java
+++ b/sources/scala/tools/scalai/JavaMirror.java
@@ -12,6 +12,7 @@ package scala.tools.scalai;
import java.lang.reflect.Field;
import java.lang.reflect.Method;
import java.lang.reflect.Constructor;
+import java.lang.reflect.Proxy;
import java.util.Map;
import java.util.HashMap;
@@ -67,6 +68,7 @@ public class JavaMirror {
// Public Methods - arrays
public Class getArray(Class component) {
+ if (Proxy.isProxyClass(component)) component = Object_class;
Object value = arrays.get(component);
if (value != null) return (Class)value;
Class array = getArray0(component);