vm/src/main/java/org/apidesign/vm4brwsr/ByteCodeToJavaScript.java
changeset 316 8da329789435
parent 306 f36b3c273de6
child 317 15cbc8cb2163
     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  }