# HG changeset patch # User Jaroslav Tulach # Date 1349975001 25200 # Node ID 2354255a1844f753a276197a7419fc066dc9efea # Parent ff3f0de0b8a26896f6581e0d51a89f2f4aa04a38 Static methods needs to be in the prototype, as the bytecode can refer to them as being in a subclass diff -r ff3f0de0b8a2 -r 2354255a1844 htmlpage/src/main/java/org/apidesign/bck2brwsr/htmlpage/api/Input.java --- a/htmlpage/src/main/java/org/apidesign/bck2brwsr/htmlpage/api/Input.java Thu Oct 11 06:16:00 2012 -0700 +++ b/htmlpage/src/main/java/org/apidesign/bck2brwsr/htmlpage/api/Input.java Thu Oct 11 10:03:21 2012 -0700 @@ -31,10 +31,10 @@ } public void setAutocomplete(boolean state) { - Element.setAttribute(this, "autocomplete", state); + setAttribute(this, "autocomplete", state); } public final String getValue() { - return (String)Element.getAttribute(this, "value"); + return (String)getAttribute(this, "value"); } } diff -r ff3f0de0b8a2 -r 2354255a1844 htmlpage/src/main/java/org/apidesign/bck2brwsr/htmlpage/api/Title.java --- a/htmlpage/src/main/java/org/apidesign/bck2brwsr/htmlpage/api/Title.java Thu Oct 11 06:16:00 2012 -0700 +++ b/htmlpage/src/main/java/org/apidesign/bck2brwsr/htmlpage/api/Title.java Thu Oct 11 10:03:21 2012 -0700 @@ -31,6 +31,6 @@ } public final void setText(String text) { - Element.setAttribute(this, "innerHTML", text); + setAttribute(this, "innerHTML", text); } } diff -r ff3f0de0b8a2 -r 2354255a1844 vm/src/main/java/org/apidesign/vm4brwsr/ByteCodeToJavaScript.java --- a/vm/src/main/java/org/apidesign/vm4brwsr/ByteCodeToJavaScript.java Thu Oct 11 06:16:00 2012 -0700 +++ b/vm/src/main/java/org/apidesign/vm4brwsr/ByteCodeToJavaScript.java Thu Oct 11 10:03:21 2012 -0700 @@ -130,7 +130,7 @@ .append(".prototype = new ").append(sc.getInternalName().replace('/', '_')).append(';'); } for (Method m : jc.getMethods()) { - if (!m.isStatic() && !m.isPrivate() && !m.getName().contains("")) { + if (!m.getName().contains("") && !m.getName().contains("")) { compiler.generateMethodReference("\n " + className + ".prototype.", m); } } @@ -828,7 +828,11 @@ } final String in = mi.getClassName().getInternalName(); out.append(in.replace('/', '_')); - out.append('_'); + if (isStatic) { + out.append(".prototype."); + } else { + out.append('_'); + } out.append(mn); out.append('('); String sep = ""; diff -r ff3f0de0b8a2 -r 2354255a1844 vm/src/test/java/org/apidesign/vm4brwsr/InstanceSub.java --- a/vm/src/test/java/org/apidesign/vm4brwsr/InstanceSub.java Thu Oct 11 06:16:00 2012 -0700 +++ b/vm/src/test/java/org/apidesign/vm4brwsr/InstanceSub.java Thu Oct 11 10:03:21 2012 -0700 @@ -30,4 +30,8 @@ public void setByte(byte b) { super.setByte((byte) (b + 1)); } + + public static double recallDbl() { + return defaultDblValue(); + } } diff -r ff3f0de0b8a2 -r 2354255a1844 vm/src/test/java/org/apidesign/vm4brwsr/InstanceTest.java --- a/vm/src/test/java/org/apidesign/vm4brwsr/InstanceTest.java Thu Oct 11 06:16:00 2012 -0700 +++ b/vm/src/test/java/org/apidesign/vm4brwsr/InstanceTest.java Thu Oct 11 10:03:21 2012 -0700 @@ -34,6 +34,13 @@ Double.valueOf(0) ); } + @Test public void verifyStaticMethodCall() throws Exception { + assertExec( + "Will be zero", + "org_apidesign_vm4brwsr_InstanceSub_recallDblD", + Double.valueOf(0) + ); + } @Test public void verifyAssignedByteValue() throws Exception { assertExec( "Will one thirty one",