# HG changeset patch # User Jaroslav Tulach # Date 1362347402 -3600 # Node ID e93506e603ad48c8d72a0d496fa35eff4df4a3af # Parent 178754f29511fbb4d989e6c39e036ee30685fb74 The order of dimensions was reverted diff -r 178754f29511 -r e93506e603ad rt/vm/src/main/java/org/apidesign/vm4brwsr/ByteCodeToJavaScript.java --- a/rt/vm/src/main/java/org/apidesign/vm4brwsr/ByteCodeToJavaScript.java Sat Mar 02 17:02:00 2013 +0100 +++ b/rt/vm/src/main/java/org/apidesign/vm4brwsr/ByteCodeToJavaScript.java Sun Mar 03 22:50:02 2013 +0100 @@ -994,9 +994,9 @@ dims.append('['); for (int d = 0; d < dim; d++) { if (d != 0) { - dims.append(","); + dims.insert(1, ","); } - dims.append(smapper.popI()); + dims.insert(1, smapper.popI()); } dims.append(']'); emit(out, "var @2 = Array.prototype.multiNewArray__Ljava_lang_Object_2Ljava_lang_String_2_3II('@3', @1, 0);", diff -r 178754f29511 -r e93506e603ad rt/vm/src/test/java/org/apidesign/vm4brwsr/Array.java --- a/rt/vm/src/test/java/org/apidesign/vm4brwsr/Array.java Sat Mar 02 17:02:00 2013 +0100 +++ b/rt/vm/src/test/java/org/apidesign/vm4brwsr/Array.java Sun Mar 03 22:50:02 2013 +0100 @@ -132,4 +132,8 @@ arraycopy(arr()[0][0].chars, 0, arr, 0, 1); return arr[0]; } + + public static int multiLen() { + return new int[1][0].length; + } } diff -r 178754f29511 -r e93506e603ad rt/vm/src/test/java/org/apidesign/vm4brwsr/ArrayTest.java --- a/rt/vm/src/test/java/org/apidesign/vm4brwsr/ArrayTest.java Sat Mar 02 17:02:00 2013 +0100 +++ b/rt/vm/src/test/java/org/apidesign/vm4brwsr/ArrayTest.java Sun Mar 03 22:50:02 2013 +0100 @@ -75,6 +75,9 @@ @Test public void verifyInstanceOfArray() throws Exception { assertExec("Returns 'false'", Array.class, "instanceOfArray__ZLjava_lang_Object_2", Double.valueOf(0), "non-array"); } + @Test public void verifyMultiLen() throws Exception { + assertExec("Multi len is one", Array.class, "multiLen__I", Double.valueOf(1)); + } private static TestVM code; diff -r 178754f29511 -r e93506e603ad rt/vmtest/src/test/java/org/apidesign/bck2brwsr/tck/CompareByteArrayTest.java --- a/rt/vmtest/src/test/java/org/apidesign/bck2brwsr/tck/CompareByteArrayTest.java Sat Mar 02 17:02:00 2013 +0100 +++ b/rt/vmtest/src/test/java/org/apidesign/bck2brwsr/tck/CompareByteArrayTest.java Sun Mar 03 22:50:02 2013 +0100 @@ -68,6 +68,16 @@ @Compare public String toOfBoundsMinus() { return toIndex(-1); } + + @Compare public int multiArrayLength() { + int[][] arr = new int[1][0]; + return arr[0].length; + } + + @Compare public int multiObjectArrayLength() { + Object[][] arr = new Object[1][0]; + return arr[0].length; + } private static final int[] arr = { 0, 1, 2 }; public static String atIndex(int at) {