rt/vm/src/main/java/org/apidesign/vm4brwsr/ByteCodeToJavaScript.java
branchjdk8
changeset 1673 2d3d0b72af04
parent 1666 4e349118658f
child 1686 63ca617c8101
     1.1 --- a/rt/vm/src/main/java/org/apidesign/vm4brwsr/ByteCodeToJavaScript.java	Mon Aug 11 20:10:46 2014 +0200
     1.2 +++ b/rt/vm/src/main/java/org/apidesign/vm4brwsr/ByteCodeToJavaScript.java	Sun Aug 17 19:58:05 2014 +0200
     1.3 @@ -261,6 +261,19 @@
     1.4          append("\n    function fillInstOf(x) {");
     1.5          String instOfName = "$instOf_" + className;
     1.6          append("\n        Object.defineProperty(x, '").append(instOfName).append("', { value : true });");
     1.7 +        if (jc.isInterface()) {
     1.8 +            for (MethodData m : jc.getMethods()) {
     1.9 +                if ((m.getAccess() & ACC_ABSTRACT) == 0
    1.10 +                        && (m.getAccess() & ACC_STATIC) == 0
    1.11 +                        && (m.getAccess() & ACC_PRIVATE) == 0) {
    1.12 +                    final String mn = findMethodName(m, new StringBuilder());
    1.13 +                    append("\n        try {");
    1.14 +                    append("\n          Object.defineProperty(x, '").append(mn).append("', { value : c['").append(mn).append("']});");
    1.15 +                    append("\n        } catch (ignore) {");
    1.16 +                    append("\n        }");
    1.17 +                }
    1.18 +            }
    1.19 +        }
    1.20          for (String superInterface : jc.getSuperInterfaces()) {
    1.21              String intrfc = superInterface.replace('/', '_');
    1.22              append("\n      vm.").append(intrfc).append("(false)['fillInstOf'](x);");