Can we call a filter that takes an object array?
authorJaroslav Tulach <jaroslav.tulach@apidesign.org>
Tue, 25 Sep 2012 17:29:41 +0200
changeset 3396e44a3f544d
parent 32 82476405e1ad
child 34 6fcc0dfbe324
child 37 256dcf88cd7d
Can we call a filter that takes an object array?
vm/src/main/java/org/apidesign/vm4brwsr/ByteCodeToJavaScript.java
vm/src/test/java/org/apidesign/vm4brwsr/Array.java
     1.1 --- a/vm/src/main/java/org/apidesign/vm4brwsr/ByteCodeToJavaScript.java	Tue Sep 25 14:19:12 2012 +0200
     1.2 +++ b/vm/src/main/java/org/apidesign/vm4brwsr/ByteCodeToJavaScript.java	Tue Sep 25 17:29:41 2012 +0200
     1.3 @@ -687,7 +687,7 @@
     1.4                          sig.insert(firstPos, descriptor.substring(i, next).replace('/', '_'));
     1.5                          sig.insert(firstPos, ch);
     1.6                          if (array) {
     1.7 -                            sig.append('A');
     1.8 +                            sig.insert(firstPos, 'A');
     1.9                          }
    1.10                          hasReturnType[0] = true;
    1.11                      }
    1.12 @@ -717,11 +717,11 @@
    1.13              tmp.append("classV"); // NOI18N
    1.14          } else {
    1.15              tmp.append(m.getName());
    1.16 -            outType(findDescriptor(m.getReturnType()), tmp);
    1.17 +            outType(m.getReturnType(), tmp);
    1.18          } 
    1.19          List<Parameter> args = m.getParameters();
    1.20          for (Parameter t : args) {
    1.21 -            outType(findDescriptor(t.getDescriptor()), tmp);
    1.22 +            outType(t.getDescriptor(), tmp);
    1.23          }
    1.24          return tmp.toString();
    1.25      }
    1.26 @@ -814,7 +814,12 @@
    1.27          }
    1.28      }
    1.29  
    1.30 -    private void outType(final String d, StringBuilder out) {
    1.31 +    private void outType(String d, StringBuilder out) {
    1.32 +        int arr = 0;
    1.33 +        while (d.charAt(0) == '[') {
    1.34 +            out.append('A');
    1.35 +            d = d.substring(1);
    1.36 +        }
    1.37          if (d.charAt(0) == 'L') {
    1.38              assert d.charAt(d.length() - 1) == ';';
    1.39              out.append(d.replace('/', '_').substring(0, d.length() - 1));
     2.1 --- a/vm/src/test/java/org/apidesign/vm4brwsr/Array.java	Tue Sep 25 14:19:12 2012 +0200
     2.2 +++ b/vm/src/test/java/org/apidesign/vm4brwsr/Array.java	Tue Sep 25 17:29:41 2012 +0200
     2.3 @@ -53,14 +53,21 @@
     2.4      
     2.5      private static final Array[] ARR = { new Array(), new Array(), new Array() };
     2.6      
     2.7 +    private static Array[] arr() {
     2.8 +        return ARR;
     2.9 +    }
    2.10 +    private static <T> T[] filter(T[] in) {
    2.11 +        return in;
    2.12 +    }
    2.13 +    
    2.14      public static double sum() {
    2.15          double sum = 0.0;
    2.16 -        for (int i = 0; i < ARR.length; i++) {
    2.17 -            sum += ARR[i].bytes();
    2.18 -            sum += ARR[i].shorts();
    2.19 -            sum += ARR[i].ints()[2];
    2.20 -            sum += ARR[i].floats();
    2.21 -            sum += ARR[i].doubles();
    2.22 +        for (int i = 0; i < arr().length; i++) {
    2.23 +            sum += arr()[i].bytes();
    2.24 +            sum += arr()[i].shorts();
    2.25 +            sum += arr()[i].ints()[2];
    2.26 +            sum += arr()[i].floats();
    2.27 +            sum += filter(arr())[i].doubles();
    2.28          }
    2.29          return sum;
    2.30      }