diff options
author | paltherr <paltherr@epfl.ch> | 2004-03-16 10:14:08 +0000 |
---|---|---|
committer | paltherr <paltherr@epfl.ch> | 2004-03-16 10:14:08 +0000 |
commit | b5d1f0a2f4b0d2e871f8a0e0a40a88e99d78e6c2 (patch) | |
tree | 7661f599854891b0bb9bf08bb93fbddd991f9027 /sources | |
parent | 4b1688cfd44761fa2e35fed783da9d705c2561c0 (diff) | |
download | scala-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.java | 3 | ||||
-rw-r--r-- | sources/scala/tools/scalai/JavaMirror.java | 2 |
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); |