vm/src/main/java/org/apidesign/vm4brwsr/ByteCodeToJavaScript.java
changeset 33 96e44a3f544d
parent 32 82476405e1ad
child 37 256dcf88cd7d
     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));