1.1 --- a/vm/src/main/java/org/apidesign/vm4brwsr/ByteCodeToJavaScript.java Thu Jan 24 00:10:23 2013 +0100
1.2 +++ b/vm/src/main/java/org/apidesign/vm4brwsr/ByteCodeToJavaScript.java Thu Jan 24 00:12:07 2013 +0100
1.3 @@ -1416,8 +1416,12 @@
1.4 String[] classRef = { null };
1.5 String s = jc.stringValue(entryIndex, classRef);
1.6 if (classRef[0] != null) {
1.7 - addReference(classRef[0]);
1.8 - s = accessClass(s.replace('/', '_')) + "(false).constructor.$class";
1.9 + if (classRef[0].startsWith("[")) {
1.10 + s = accessClass("java_lang_Class") + "(false).forName__Ljava_lang_Class_2Ljava_lang_String_2('" + classRef[0] + "');";
1.11 + } else {
1.12 + addReference(classRef[0]);
1.13 + s = accessClass(s.replace('/', '_')) + "(false).constructor.$class";
1.14 + }
1.15 }
1.16 return s;
1.17 }
2.1 --- a/vm/src/test/java/org/apidesign/vm4brwsr/Array.java Thu Jan 24 00:10:23 2013 +0100
2.2 +++ b/vm/src/test/java/org/apidesign/vm4brwsr/Array.java Thu Jan 24 00:12:07 2013 +0100
2.3 @@ -108,6 +108,10 @@
2.4 return sum;
2.5 }
2.6
2.7 + public static String objectArrayClass() {
2.8 + return Object[].class.getName();
2.9 + }
2.10 +
2.11 public static int sum(int size) {
2.12 int[] arr = new int[size];
2.13 return arr[0] + arr[1];
3.1 --- a/vm/src/test/java/org/apidesign/vm4brwsr/ArrayTest.java Thu Jan 24 00:10:23 2013 +0100
3.2 +++ b/vm/src/test/java/org/apidesign/vm4brwsr/ArrayTest.java Thu Jan 24 00:12:07 2013 +0100
3.3 @@ -68,6 +68,10 @@
3.4 @Test public void doesCopyArrayWork() throws Exception {
3.5 assertExec("Returns 'a'", Array.class, "copyArray__C", Double.valueOf('a'));
3.6 }
3.7 +
3.8 + @Test public void verifyObjectArrayClass() throws Exception {
3.9 + assertExec("Returns 'Object[]'", Array.class, "objectArrayClass__Ljava_lang_String_2", Array.objectArrayClass());
3.10 + }
3.11
3.12 private static CharSequence codeSeq;
3.13 private static Invocable code;