1.1 --- a/rt/vm/src/main/java/org/apidesign/vm4brwsr/ByteCodeToJavaScript.java Tue May 13 13:34:14 2014 +0200
1.2 +++ b/rt/vm/src/main/java/org/apidesign/vm4brwsr/ByteCodeToJavaScript.java Thu May 22 15:29:40 2014 +0200
1.3 @@ -229,17 +229,7 @@
1.4 }
1.5 for (MethodData m : jc.getMethods()) {
1.6 byte[] onlyArr = m.findAnnotationData(true);
1.7 - String[] only = findAnnotation(onlyArr, jc,
1.8 - "org.apidesign.bck2brwsr.core.JavaScriptOnly",
1.9 - "name", "value"
1.10 - );
1.11 - if (only != null) {
1.12 - if (only[0] != null && only[1] != null) {
1.13 - append("\n p.").append(only[0]).append(" = ")
1.14 - .append(only[1]).append(";");
1.15 - }
1.16 - continue;
1.17 - }
1.18 + if (javaScriptOnly(onlyArr)) continue;
1.19 String destObject;
1.20 String mn;
1.21 append("\n ");
1.22 @@ -301,17 +291,7 @@
1.23 append("\n }");
1.24 for (FieldData v : jc.getFields()) {
1.25 byte[] onlyArr = v.findAnnotationData(true);
1.26 - String[] only = findAnnotation(onlyArr, jc,
1.27 - "org.apidesign.bck2brwsr.core.JavaScriptOnly",
1.28 - "name", "value"
1.29 - );
1.30 - if (only != null) {
1.31 - if (only[0] != null && only[1] != null) {
1.32 - append("\n p.").append(only[0]).append(" = ")
1.33 - .append(only[1]).append(";");
1.34 - }
1.35 - continue;
1.36 - }
1.37 + if (javaScriptOnly(onlyArr)) continue;
1.38 if (!v.isStatic()) {
1.39 append("\n this.fld_").
1.40 append(className).append('_').
1.41 @@ -331,6 +311,25 @@
1.42 // }
1.43 return "";
1.44 }
1.45 +
1.46 + private boolean javaScriptOnly(byte[] anno) throws IOException {
1.47 + String[] only = findAnnotation(anno, jc,
1.48 + "org.apidesign.bck2brwsr.core.JavaScriptOnly",
1.49 + "name", "value"
1.50 + );
1.51 + if (only != null) {
1.52 + if (only[0] != null && only[1] != null) {
1.53 + append("\n p.").append(only[0]).append(" = ")
1.54 + .append(only[1]).append(";");
1.55 + }
1.56 + if (ExportedSymbols.isMarkedAsExported(anno, jc)) {
1.57 + append("\n p['").append(only[0]).append("'] = p.")
1.58 + .append(only[0]).append(";");
1.59 + }
1.60 + return true;
1.61 + }
1.62 + return false;
1.63 + }
1.64 private String generateStaticMethod(String destObject, MethodData m, StringArray toInitilize) throws IOException {
1.65 String jsb = javaScriptBody(destObject, m, true);
1.66 if (jsb != null) {