1.1 --- a/vm/src/main/java/org/apidesign/vm4brwsr/ByteCodeToJavaScript.java Wed Dec 12 09:09:42 2012 +0100
1.2 +++ b/vm/src/main/java/org/apidesign/vm4brwsr/ByteCodeToJavaScript.java Thu Dec 13 23:20:47 2012 +0100
1.3 @@ -109,6 +109,9 @@
1.4 out.append("\n var sprcls = pp.constructor.$class;");
1.5 } else {
1.6 out.append("\n var p = CLS.prototype = ").append(proto[1]).append(";");
1.7 + if (proto[0] == null) {
1.8 + proto[0] = "p";
1.9 + }
1.10 out.append("\n var c = ").append(proto[0]).append(";");
1.11 out.append("\n var sprcls = null;");
1.12 }
1.13 @@ -1081,8 +1084,7 @@
1.14 String space;
1.15 int index;
1.16 if (!isStatic) {
1.17 - out.append(p.args[0]);
1.18 - space = ",";
1.19 + space = outputArg(out, p.args, 0);
1.20 index = 1;
1.21 } else {
1.22 space = "";
1.23 @@ -1090,9 +1092,8 @@
1.24 }
1.25 for (int i = 0; i < cnt.length(); i++) {
1.26 out.append(space);
1.27 - out.append(p.args[index]);
1.28 + space = outputArg(out, p.args, index);
1.29 index++;
1.30 - space = ",";
1.31 }
1.32 out.append(") {").append("\n");
1.33 out.append(p.body);
1.34 @@ -1184,4 +1185,16 @@
1.35 };
1.36 ap.parse(data, cd);
1.37 }
1.38 +
1.39 + private static String outputArg(Appendable out, String[] args, int indx) throws IOException {
1.40 + final String name = args[indx];
1.41 + if (name == null) {
1.42 + return "";
1.43 + }
1.44 + if (name.contains(",")) {
1.45 + throw new IOException("Wrong parameter with ',': " + name);
1.46 + }
1.47 + out.append(name);
1.48 + return ",";
1.49 + }
1.50 }