# HG changeset patch # User Jaroslav Tulach # Date 1348130394 -7200 # Node ID cb0cfba1b863dc5279dcdfbae86924d4ee8015f9 # Parent 6e8e00258234457c643062cdfe7ac85bad6529fe instanceOf support diff -r 6e8e00258234 -r cb0cfba1b863 src/main/java/org/apidesign/java4browser/ByteCodeToJavaScript.java --- a/src/main/java/org/apidesign/java4browser/ByteCodeToJavaScript.java Thu Sep 20 10:26:59 2012 +0200 +++ b/src/main/java/org/apidesign/java4browser/ByteCodeToJavaScript.java Thu Sep 20 10:39:54 2012 +0200 @@ -82,6 +82,7 @@ out.append("\n this." + v.getName() + " = 0;"); } } + out.append("\n this.$instOf_").append(className).append(" = true;"); out.append("\n}"); ClassName sc = jc.getSuperClass(); if (sc != null) { @@ -446,6 +447,14 @@ i += 2; break; } + case bc_instanceof: { + int indx = readIntArg(byteCodes, i); + CPClassInfo ci = jc.getConstantPool().getClass(indx); + out.append("stack.push(stack.pop().$instOf_") + .append(ci.getClassName().getExternalName().replace('.', '_')) + .append(" ? 1 : 0);"); + i += 2; + } } out.append(" /*"); diff -r 6e8e00258234 -r cb0cfba1b863 src/test/java/org/apidesign/java4browser/InstanceTest.java --- a/src/test/java/org/apidesign/java4browser/InstanceTest.java Thu Sep 20 10:26:59 2012 +0200 +++ b/src/test/java/org/apidesign/java4browser/InstanceTest.java Thu Sep 20 10:39:54 2012 +0200 @@ -57,7 +57,7 @@ Double.valueOf(0.0) ); } - /* + @Test public void isInstanceOf() throws Exception { assertExec( "Yes, we are instance", @@ -73,7 +73,7 @@ Double.valueOf(0.0), false ); } - */ + private static void assertExec(String msg, String methodName, Object expRes, Object... args) throws Exception { StringBuilder sb = new StringBuilder(); Invocable i = StaticMethodTest.compileClass(sb, "Instance.class", "InstanceSub.class");