rt/emul/mini/src/main/java/java/lang/reflect/Array.java
branchclosure
changeset 1535 c02c6d409461
parent 1534 ca538fb33f48
child 1541 3471d74a6b99
     1.1 --- a/rt/emul/mini/src/main/java/java/lang/reflect/Array.java	Tue May 06 10:08:42 2014 +0200
     1.2 +++ b/rt/emul/mini/src/main/java/java/lang/reflect/Array.java	Tue May 06 11:12:40 2014 +0200
     1.3 @@ -677,16 +677,20 @@
     1.4  //    private static native void log(Object m);
     1.5      
     1.6      @Exported
     1.7 -    private static Object multiNewArray(String sig, int[] dims, int index)
     1.8 +    private static Object multiNewArray(String sig, int[] dims, Object fn)
     1.9 +    throws IllegalArgumentException, NegativeArraySizeException {
    1.10 +        return multiNewArray(sig, dims, 0, fn);
    1.11 +    }
    1.12 +    private static Object multiNewArray(String sig, int[] dims, int index, Object fn)
    1.13      throws IllegalArgumentException, NegativeArraySizeException {
    1.14          if (dims.length == index + 1) {
    1.15 -            return newArray(sig.length() == 2, sig, null, dims[index]);
    1.16 +            return newArray(sig.length() == 2, sig, fn, dims[index]);
    1.17          }
    1.18          Object arr = newArray(false, sig, null, dims[index]);
    1.19          String compsig = sig.substring(1);
    1.20          int len = getLength(arr);
    1.21          for (int i = 0; i < len; i++) {
    1.22 -            setArray(arr, i, multiNewArray(compsig, dims, index + 1));
    1.23 +            setArray(arr, i, multiNewArray(compsig, dims, index + 1, fn));
    1.24          }
    1.25          return arr;
    1.26      }