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);");