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));