1.1 --- a/emul/src/main/java/java/lang/Class.java Sat Dec 01 15:30:56 2012 +0100
1.2 +++ b/emul/src/main/java/java/lang/Class.java Sat Dec 01 15:48:12 2012 +0100
1.3 @@ -191,10 +191,15 @@
1.4 * </ul>
1.5 *
1.6 */
1.7 + @JavaScriptBody(args = "self", body =
1.8 + "var inst = self.cnstr();"
1.9 + + "inst.consV(inst);"
1.10 + + "return inst;"
1.11 + )
1.12 public T newInstance()
1.13 throws InstantiationException, IllegalAccessException
1.14 {
1.15 - throw new UnsupportedOperationException("Should be somehow supported");
1.16 + throw new UnsupportedOperationException();
1.17 }
1.18
1.19 /**
2.1 --- a/vm/src/main/java/org/apidesign/vm4brwsr/ByteCodeToJavaScript.java Sat Dec 01 15:30:56 2012 +0100
2.2 +++ b/vm/src/main/java/org/apidesign/vm4brwsr/ByteCodeToJavaScript.java Sat Dec 01 15:48:12 2012 +0100
2.3 @@ -118,6 +118,7 @@
2.4 out.append("\n CLS.$class = java_lang_Class(true);");
2.5 out.append("\n CLS.$class.jvmName = '").append(jc.getClassName()).append("';");
2.6 out.append("\n CLS.$class.superclass = sprcls;");
2.7 + out.append("\n CLS.$class.cnstr = CLS;");
2.8 out.append("\n }");
2.9 out.append("\n if (arguments.length === 0) {");
2.10 out.append("\n if (!(this instanceof CLS)) {");
3.1 --- a/vm/src/test/java/org/apidesign/vm4brwsr/ClassTest.java Sat Dec 01 15:30:56 2012 +0100
3.2 +++ b/vm/src/test/java/org/apidesign/vm4brwsr/ClassTest.java Sat Dec 01 15:48:12 2012 +0100
3.3 @@ -68,6 +68,12 @@
3.4 @Test public void jsCanonicalName() throws Exception {
3.5 assertExec("I/O simple name", Classes.class, "canonicalNameLjava_lang_String", "java.io.IOException");
3.6 }
3.7 + @Test public void javaNewInstance() throws Exception {
3.8 + assertTrue(Classes.newInstance());
3.9 + }
3.10 + @Test public void jsNewInstance() throws Exception {
3.11 + assertExec("Check new instance", Classes.class, "newInstanceZ", Double.valueOf(1));
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 Sat Dec 01 15:30:56 2012 +0100
4.2 +++ b/vm/src/test/java/org/apidesign/vm4brwsr/Classes.java Sat Dec 01 15:48:12 2012 +0100
4.3 @@ -47,7 +47,11 @@
4.4 public static String canonicalName() {
4.5 return IOException.class.getCanonicalName();
4.6 }
4.7 - public static IOException newInstance() throws InstantiationException, IllegalAccessException {
4.8 - return IOException.class.newInstance();
4.9 + public static boolean newInstance() throws Exception {
4.10 + IOException ioe = IOException.class.newInstance();
4.11 + if (ioe instanceof IOException) {
4.12 + return ioe.getClass() == IOException.class;
4.13 + }
4.14 + throw new IllegalStateException("Not a subtype: " + ioe);
4.15 }
4.16 }