# HG changeset patch # User Jaroslav Tulach # Date 1358011105 -3600 # Node ID 2c0646d78e68bb06ba0b5a34d788d68a5dc3bae5 # Parent 742bb3f91603a8f1f5310c8f65dfd2d35a680a81 Class.cast and Class.isInstance work diff -r 742bb3f91603 -r 2c0646d78e68 emul/src/main/java/java/lang/Class.java --- a/emul/src/main/java/java/lang/Class.java Sat Jan 12 17:35:01 2013 +0100 +++ b/emul/src/main/java/java/lang/Class.java Sat Jan 12 18:18:25 2013 +0100 @@ -269,7 +269,15 @@ * * @since JDK1.1 */ - public native boolean isInstance(Object obj); + public boolean isInstance(Object obj) { + String prop = "$instOf_" + getName().replace('.', '_'); + return hasProperty(obj, prop); + } + + @JavaScriptBody(args = { "who", "prop" }, body = + "if (who[prop]) return true; else return false;" + ) + private static native boolean hasProperty(Object who, String prop); /** diff -r 742bb3f91603 -r 2c0646d78e68 vmtest/src/test/java/org/apidesign/bck2brwsr/tck/CompareStringsTest.java --- a/vmtest/src/test/java/org/apidesign/bck2brwsr/tck/CompareStringsTest.java Sat Jan 12 17:35:01 2013 +0100 +++ b/vmtest/src/test/java/org/apidesign/bck2brwsr/tck/CompareStringsTest.java Sat Jan 12 18:18:25 2013 +0100 @@ -32,6 +32,16 @@ return "" + ("Hello".toCharArray()[0]); } + @Compare public String classCast() { + Object o = firstChar(); + return String.class.cast(o); + } + + @Compare public String classCastThrown() { + Object o = null; + return String.class.cast(o); + } + @Compare public static Object compareURLs() throws MalformedURLException { return new URL("http://apidesign.org:8080/wiki/").toExternalForm().toString(); }