Class.cast and Class.isInstance work
authorJaroslav Tulach <jaroslav.tulach@apidesign.org>
Sat, 12 Jan 2013 18:18:25 +0100
changeset 4342c0646d78e68
parent 433 742bb3f91603
child 435 fb4ed6cc0d4b
Class.cast and Class.isInstance work
emul/src/main/java/java/lang/Class.java
vmtest/src/test/java/org/apidesign/bck2brwsr/tck/CompareStringsTest.java
     1.1 --- a/emul/src/main/java/java/lang/Class.java	Sat Jan 12 17:35:01 2013 +0100
     1.2 +++ b/emul/src/main/java/java/lang/Class.java	Sat Jan 12 18:18:25 2013 +0100
     1.3 @@ -269,7 +269,15 @@
     1.4       *
     1.5       * @since JDK1.1
     1.6       */
     1.7 -    public native boolean isInstance(Object obj);
     1.8 +    public boolean isInstance(Object obj) {
     1.9 +        String prop = "$instOf_" + getName().replace('.', '_');
    1.10 +        return hasProperty(obj, prop);
    1.11 +    }
    1.12 +    
    1.13 +    @JavaScriptBody(args = { "who", "prop" }, body = 
    1.14 +        "if (who[prop]) return true; else return false;"
    1.15 +    )
    1.16 +    private static native boolean hasProperty(Object who, String prop);
    1.17  
    1.18  
    1.19      /**
     2.1 --- a/vmtest/src/test/java/org/apidesign/bck2brwsr/tck/CompareStringsTest.java	Sat Jan 12 17:35:01 2013 +0100
     2.2 +++ b/vmtest/src/test/java/org/apidesign/bck2brwsr/tck/CompareStringsTest.java	Sat Jan 12 18:18:25 2013 +0100
     2.3 @@ -32,6 +32,16 @@
     2.4          return "" + ("Hello".toCharArray()[0]);
     2.5      }
     2.6      
     2.7 +    @Compare public String classCast() {
     2.8 +        Object o = firstChar();
     2.9 +        return String.class.cast(o);
    2.10 +    }
    2.11 +
    2.12 +    @Compare public String classCastThrown() {
    2.13 +        Object o = null;
    2.14 +        return String.class.cast(o);
    2.15 +    }
    2.16 +    
    2.17      @Compare public static Object compareURLs() throws MalformedURLException {
    2.18          return new URL("http://apidesign.org:8080/wiki/").toExternalForm().toString();
    2.19      }