1.1 --- a/rt/vm/src/main/java/org/apidesign/vm4brwsr/ByteCodeToJavaScript.java Wed Mar 11 08:50:51 2015 +0100
1.2 +++ b/rt/vm/src/main/java/org/apidesign/vm4brwsr/ByteCodeToJavaScript.java Wed Mar 11 16:04:59 2015 +0100
1.3 @@ -156,6 +156,14 @@
1.4 protected String compile(ClassData classData) throws IOException {
1.5 this.jc = classData;
1.6 final String cn = this.jc.getClassName();
1.7 + try {
1.8 + return compileImpl(cn);
1.9 + } catch (IOException ex) {
1.10 + throw new IOException("Cannot compile " + cn + ":", ex);
1.11 + }
1.12 + }
1.13 +
1.14 + private String compileImpl(final String cn) throws IOException {
1.15 this.callbacks = cn.endsWith("/$JsCallbacks$");
1.16 if (jc.getMajor_version() < 50 && !cn.endsWith("/package-info")) {
1.17 throw new IOException("Can't compile " + cn + ". Class file version " + jc.getMajor_version() + "."
1.18 @@ -164,7 +172,7 @@
1.19 }
1.20 byte[] arrData = jc.findAnnotationData(true);
1.21 {
1.22 - String[] arr = findAnnotation(arrData, jc,
1.23 + String[] arr = findAnnotation(arrData, jc,
1.24 "org.apidesign.bck2brwsr.core.ExtraJavaScript",
1.25 "resource", "processByteCode"
1.26 );
1.27 @@ -179,7 +187,7 @@
1.28 }
1.29 final String jsResource;
1.30 {
1.31 - String[] arr = findAnnotation(arrData, jc,
1.32 + String[] arr = findAnnotation(arrData, jc,
1.33 "net.java.html.js.JavaScriptResource",
1.34 "value"
1.35 );
1.36 @@ -194,7 +202,7 @@
1.37 jsResource = null;
1.38 }
1.39 }
1.40 - String[] proto = findAnnotation(arrData, jc,
1.41 + String[] proto = findAnnotation(arrData, jc,
1.42 "org.apidesign.bck2brwsr.core.JavaScriptPrototype",
1.43 "container", "prototype"
1.44 );
1.45 @@ -229,16 +237,16 @@
1.46 }
1.47 append("\n CLS.fld_").append(v.getName()).append(initField(v));
1.48 append("\n m = c._").append(v.getName()).append(" = function (v) {")
1.49 - .append(" if (arguments.length == 1) CLS.fld_").append(v.getName())
1.50 - .append(" = v; return CLS.fld_").
1.51 + .append(" if (arguments.length == 1) CLS.fld_").append(v.getName())
1.52 + .append(" = v; return CLS.fld_").
1.53 append(v.getName()).append("; };");
1.54 } else {
1.55 append("\n m = c._").append(v.getName()).append(" = function (v) {")
1.56 - .append(" if (arguments.length == 1) this.fld_").
1.57 + .append(" if (arguments.length == 1) this.fld_").
1.58 append(className).append('_').append(v.getName())
1.59 - .append(" = v; return this.fld_").
1.60 + .append(" = v; return this.fld_").
1.61 append(className).append('_').append(v.getName())
1.62 - .append("; };");
1.63 + .append("; };");
1.64 }
1.65
1.66 declaredField(v, "c", "_" + v.getName());
1.67 @@ -278,8 +286,8 @@
1.68 if (jc.isInterface()) {
1.69 for (MethodData m : jc.getMethods()) {
1.70 if ((m.getAccess() & ACC_ABSTRACT) == 0
1.71 - && (m.getAccess() & ACC_STATIC) == 0
1.72 - && (m.getAccess() & ACC_PRIVATE) == 0) {
1.73 + && (m.getAccess() & ACC_STATIC) == 0
1.74 + && (m.getAccess() & ACC_PRIVATE) == 0) {
1.75 final String mn = findMethodName(m, new StringBuilder());
1.76 append("\n if (!x['").append(mn).append("']) Object.defineProperty(x, '").append(mn).append("', { value : c['").append(mn).append("']});");
1.77 }