1.1 --- a/javap/src/main/java/org/apidesign/javap/ClassData.java Tue Dec 11 10:24:00 2012 +0100
1.2 +++ b/javap/src/main/java/org/apidesign/javap/ClassData.java Tue Dec 11 11:05:06 2012 +0100
1.3 @@ -554,14 +554,14 @@
1.4 return in.toString();
1.5 }
1.6 case CONSTANT_CLASS:
1.7 - String jn = javaName(getClassName(cpx));
1.8 + String jn = getClassName(cpx);
1.9 if (textual) {
1.10 if (refs != null) {
1.11 refs[0] = jn;
1.12 }
1.13 return jn;
1.14 }
1.15 - return jn;
1.16 + return javaName(jn);
1.17 case CONSTANT_STRING:
1.18 String sv = stringValue(((CPX)x).cpx, textual);
1.19 if (textual) {
2.1 --- a/vm/src/main/java/org/apidesign/vm4brwsr/ByteCodeToJavaScript.java Tue Dec 11 10:24:00 2012 +0100
2.2 +++ b/vm/src/main/java/org/apidesign/vm4brwsr/ByteCodeToJavaScript.java Tue Dec 11 11:05:06 2012 +0100
2.3 @@ -19,6 +19,7 @@
2.4
2.5 import java.io.IOException;
2.6 import java.io.InputStream;
2.7 +import org.apidesign.bck2brwsr.core.JavaScriptBody;
2.8 import org.apidesign.javap.AnnotationParser;
2.9 import org.apidesign.javap.ClassData;
2.10 import org.apidesign.javap.FieldData;
3.1 --- a/vm/src/test/java/org/apidesign/vm4brwsr/ClassTest.java Tue Dec 11 10:24:00 2012 +0100
3.2 +++ b/vm/src/test/java/org/apidesign/vm4brwsr/ClassTest.java Tue Dec 11 11:05:06 2012 +0100
3.3 @@ -110,6 +110,12 @@
3.4 "java.io.IOException", false, null
3.5 );
3.6 }
3.7 + @Test public void jsClassParam() throws Exception {
3.8 + assertExec("Calls the nameOfIO()", Classes.class,
3.9 + "nameOfIO__Ljava_lang_String_2",
3.10 + "java.io.IOException"
3.11 + );
3.12 + }
3.13
3.14 private static CharSequence codeSeq;
3.15 private static Invocable code;
4.1 --- a/vm/src/test/java/org/apidesign/vm4brwsr/Classes.java Tue Dec 11 10:24:00 2012 +0100
4.2 +++ b/vm/src/test/java/org/apidesign/vm4brwsr/Classes.java Tue Dec 11 11:05:06 2012 +0100
4.3 @@ -30,6 +30,14 @@
4.4 @ClassesMarker(number = 10)
4.5 @ClassesNamer(name = "my text")
4.6 public class Classes {
4.7 + public static String nameOfIO() {
4.8 + return nameFor(IOException.class);
4.9 + }
4.10 +
4.11 + private static String nameFor(Class<?> c) {
4.12 + return c.getName();
4.13 + }
4.14 +
4.15 public static boolean equalsClassesOfExceptions() {
4.16 return MalformedURLException.class.getSuperclass() == IOException.class;
4.17 }
5.1 --- a/vm/src/test/java/org/apidesign/vm4brwsr/CompareVMs.java Tue Dec 11 10:24:00 2012 +0100
5.2 +++ b/vm/src/test/java/org/apidesign/vm4brwsr/CompareVMs.java Tue Dec 11 11:05:06 2012 +0100
5.3 @@ -104,6 +104,12 @@
5.4 ScriptEngineManager sem = new ScriptEngineManager();
5.5 ScriptEngine js = sem.getEngineByExtension("js");
5.6 js.getContext().setAttribute("loader", new BytesLoader(), ScriptContext.ENGINE_SCOPE);
5.7 +
5.8 + sb.append("\nfunction initVM() {"
5.9 + + "\n return bck2brwsr("
5.10 + + "\n function(name) { return loader.get(name);}"
5.11 + + "\n );"
5.12 + + "\n};");
5.13
5.14 Object res = js.eval(sb.toString());
5.15 Assert.assertTrue(js instanceof Invocable, "It is invocable object: " + res);
5.16 @@ -115,7 +121,7 @@
5.17 if (js) {
5.18 try {
5.19 compileTheCode(m.getDeclaringClass());
5.20 - Object vm = code.invokeFunction("bck2brwsr");
5.21 + Object vm = code.invokeFunction("initVM");
5.22 Object inst = code.invokeMethod(vm, "loadClass", m.getDeclaringClass().getName());
5.23 value = code.invokeMethod(inst, m.getName() + "__I");
5.24 } catch (Exception ex) {
6.1 --- a/vm/src/test/java/org/apidesign/vm4brwsr/VMinVMTest.java Tue Dec 11 10:24:00 2012 +0100
6.2 +++ b/vm/src/test/java/org/apidesign/vm4brwsr/VMinVMTest.java Tue Dec 11 11:05:06 2012 +0100
6.3 @@ -38,6 +38,10 @@
6.4 @Test public void compareGeneratedCodeForArrayClass() throws Exception {
6.5 compareCode("/org/apidesign/vm4brwsr/Array.class");
6.6 }
6.7 +
6.8 + @Test public void compareGeneratedCodeForClassesClass() throws Exception {
6.9 + compareCode("/org/apidesign/vm4brwsr/Classes.class");
6.10 + }
6.11
6.12 @BeforeClass
6.13 public void compileTheCode() throws Exception {
6.14 @@ -91,9 +95,12 @@
6.15 assertTrue(ret instanceof String, "It is string: " + ret);
6.16
6.17 if (!ret1.toString().equals(ret)) {
6.18 - StringBuilder msg = StaticMethodTest.dumpJS(ret1);
6.19 - msg.append(" is not the same as ");
6.20 + StringBuilder msg = new StringBuilder("Difference found between ");
6.21 + msg.append(StaticMethodTest.dumpJS(ret1));
6.22 + msg.append(" ");
6.23 msg.append(StaticMethodTest.dumpJS((CharSequence) ret));
6.24 + msg.append(" compiled by ");
6.25 + msg.append(StaticMethodTest.dumpJS(codeSeq));
6.26 fail(msg.toString());
6.27 }
6.28 }