diff -r 82476405e1ad -r 96e44a3f544d vm/src/main/java/org/apidesign/vm4brwsr/ByteCodeToJavaScript.java --- a/vm/src/main/java/org/apidesign/vm4brwsr/ByteCodeToJavaScript.java Tue Sep 25 14:19:12 2012 +0200 +++ b/vm/src/main/java/org/apidesign/vm4brwsr/ByteCodeToJavaScript.java Tue Sep 25 17:29:41 2012 +0200 @@ -687,7 +687,7 @@ sig.insert(firstPos, descriptor.substring(i, next).replace('/', '_')); sig.insert(firstPos, ch); if (array) { - sig.append('A'); + sig.insert(firstPos, 'A'); } hasReturnType[0] = true; } @@ -717,11 +717,11 @@ tmp.append("classV"); // NOI18N } else { tmp.append(m.getName()); - outType(findDescriptor(m.getReturnType()), tmp); + outType(m.getReturnType(), tmp); } List args = m.getParameters(); for (Parameter t : args) { - outType(findDescriptor(t.getDescriptor()), tmp); + outType(t.getDescriptor(), tmp); } return tmp.toString(); } @@ -814,7 +814,12 @@ } } - private void outType(final String d, StringBuilder out) { + private void outType(String d, StringBuilder out) { + int arr = 0; + while (d.charAt(0) == '[') { + out.append('A'); + d = d.substring(1); + } if (d.charAt(0) == 'L') { assert d.charAt(d.length() - 1) == ';'; out.append(d.replace('/', '_').substring(0, d.length() - 1));