# HG changeset patch # User Jaroslav Tulach # Date 1348126182 -7200 # Node ID 65f6fdfd34b6edd5b891d27db1104b9e0940af90 # Parent 018eee22b8cfc8c5dd72ac377c404ef607b9ab4a Able to invoke interface methods diff -r 018eee22b8cf -r 65f6fdfd34b6 src/main/java/org/apidesign/java4browser/ByteCodeToJavaScript.java --- a/src/main/java/org/apidesign/java4browser/ByteCodeToJavaScript.java Wed Sep 19 20:22:12 2012 +0200 +++ b/src/main/java/org/apidesign/java4browser/ByteCodeToJavaScript.java Thu Sep 20 09:29:42 2012 +0200 @@ -376,6 +376,7 @@ i += 2; break; } + case bc_invokeinterface: case bc_invokevirtual: i = invokeVirtualMethod(byteCodes, i); break; diff -r 018eee22b8cf -r 65f6fdfd34b6 src/test/java/org/apidesign/java4browser/GetByte.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/test/java/org/apidesign/java4browser/GetByte.java Thu Sep 20 09:29:42 2012 +0200 @@ -0,0 +1,9 @@ +/* + * To change this template, choose Tools | Templates + * and open the template in the editor. + */ +package org.apidesign.java4browser; + +public interface GetByte { + public byte getByte(); +} diff -r 018eee22b8cf -r 65f6fdfd34b6 src/test/java/org/apidesign/java4browser/Instance.java --- a/src/test/java/org/apidesign/java4browser/Instance.java Wed Sep 19 20:22:12 2012 +0200 +++ b/src/test/java/org/apidesign/java4browser/Instance.java Thu Sep 20 09:29:42 2012 +0200 @@ -49,4 +49,8 @@ i2.setByte((byte)44); return i.getByte() + i2.getByte(); } + public static float interfaceBytes() { + GetByte i = new InstanceSub(7, 2.2d); + return i.getByte(); + } } diff -r 018eee22b8cf -r 65f6fdfd34b6 src/test/java/org/apidesign/java4browser/InstanceSub.java --- a/src/test/java/org/apidesign/java4browser/InstanceSub.java Wed Sep 19 20:22:12 2012 +0200 +++ b/src/test/java/org/apidesign/java4browser/InstanceSub.java Thu Sep 20 09:29:42 2012 +0200 @@ -8,7 +8,7 @@ * * @author Jaroslav Tulach */ -public class InstanceSub extends Instance { +public class InstanceSub extends Instance implements GetByte { public InstanceSub(int i, double d) { super(i, d); } diff -r 018eee22b8cf -r 65f6fdfd34b6 src/test/java/org/apidesign/java4browser/InstanceTest.java --- a/src/test/java/org/apidesign/java4browser/InstanceTest.java Wed Sep 19 20:22:12 2012 +0200 +++ b/src/test/java/org/apidesign/java4browser/InstanceTest.java Thu Sep 20 09:29:42 2012 +0200 @@ -42,6 +42,13 @@ Double.valueOf(55) ); } + @Test public void verifyInterfaceMethods() throws Exception { + assertExec( + "Retruns default value", + "org_apidesign_java4browser_Instance_interfaceBytesF", + Double.valueOf(31) + ); + } private static void assertExec(String msg, String methodName, Object expRes, Object... args) throws Exception { StringBuilder sb = new StringBuilder();