Proper type of subarrays of multi dimensional array arrays
authorJaroslav Tulach <jaroslav.tulach@apidesign.org>
Tue, 15 Jan 2013 09:46:21 +0100
brancharrays
changeset 4535aca91d00356
parent 452 086c60adf08e
child 455 02efb6bda7de
Proper type of subarrays of multi dimensional array
vm/src/main/java/org/apidesign/vm4brwsr/ByteCodeToJavaScript.java
vmtest/src/test/java/org/apidesign/bck2brwsr/tck/ReflectionTest.java
     1.1 --- a/vm/src/main/java/org/apidesign/vm4brwsr/ByteCodeToJavaScript.java	Tue Jan 15 09:32:11 2013 +0100
     1.2 +++ b/vm/src/main/java/org/apidesign/vm4brwsr/ByteCodeToJavaScript.java	Tue Jan 15 09:46:21 2013 +0100
     1.3 @@ -945,13 +945,15 @@
     1.4                      out.append("{ var a0 = new Array(").append(smapper.popI())
     1.5                         .append(").fillNulls().arrtype('").append(typeName).append("');");
     1.6                      for (int d = 1; d < dim; d++) {
     1.7 +                        typeName = typeName.substring(1);
     1.8                          out.append("\n  var l" + d).append(" = ")
     1.9                             .append(smapper.popI()).append(';');
    1.10                          out.append("\n  for (var i" + d).append (" = 0; i" + d).
    1.11                              append(" < a" + (d - 1)).
    1.12                              append(".length; i" + d).append("++) {");
    1.13                          out.append("\n    var a" + d).
    1.14 -                            append (" = new Array(l" + d).append(").fillNulls();");
    1.15 +                            append (" = new Array(l" + d).append(").fillNulls().arrtype('")
    1.16 +                            .append(typeName).append("');");
    1.17                          out.append("\n    a" + (d - 1)).append("[i" + d).append("] = a" + d).
    1.18                              append(";");
    1.19                      }
     2.1 --- a/vmtest/src/test/java/org/apidesign/bck2brwsr/tck/ReflectionTest.java	Tue Jan 15 09:32:11 2013 +0100
     2.2 +++ b/vmtest/src/test/java/org/apidesign/bck2brwsr/tck/ReflectionTest.java	Tue Jan 15 09:46:21 2013 +0100
     2.3 @@ -113,6 +113,12 @@
     2.4      @Compare public String classGetNameForMultiIntArray() {
     2.5          return (new int[3][4][5][6][7][8][9]).getClass().getName();
     2.6      }
     2.7 +    @Compare public String classGetNameForMultiIntArrayInner() {
     2.8 +        final int[][][][][][][] arr = new int[3][4][5][6][7][8][9];
     2.9 +        int[][][][][][] subarr = arr[0];
    2.10 +        int[][][][][] subsubarr = subarr[0];
    2.11 +        return subsubarr.getClass().getName();
    2.12 +    }
    2.13      @Compare public String classGetNameForMultiStringArray() {
    2.14          return (new String[3][4][5][6][7][8][9]).getClass().getName();
    2.15      }