Agreed, looking into... On Tue, Jun 28, 2011 at 2:42 PM, Ray Cromwell <[email protected]> wrote: > I think it should work, Consider how this would cause weird bugs. > Someone has code that works as a SingleJso, but then he imports a > module which provides a Java implementation, and now all of a sudden > he gets ASEs? > > > On Tue, Jun 28, 2011 at 11:31 AM, Jason Rosenberg > <[email protected]> wrote: >> What about the case for a DualSimple (e.g. an interface that has both >> java and jso implementations). In this case, my fix doesn't allow the >> jso to be assigned to an array of DualSimple[]. Is that expected (I'm >> guessing not). >> >> Jason >> >> On Tue, Jun 28, 2011 at 2:05 PM, <[email protected]> wrote: >>> >>> http://gwt-code-reviews.appspot.com/1470801/diff/1/user/test/com/google/gwt/dev/jjs/test/SingleJsoImplTest.java >>> File user/test/com/google/gwt/dev/jjs/test/SingleJsoImplTest.java >>> (right): >>> >>> http://gwt-code-reviews.appspot.com/1470801/diff/1/user/test/com/google/gwt/dev/jjs/test/SingleJsoImplTest.java#newcode531 >>> user/test/com/google/gwt/dev/jjs/test/SingleJsoImplTest.java:531: Simple >>> simpleTwo = (Simple) JavaScriptObject.createObject(); >>> I don't think that's the expected behavior. IIRC, ArrayStoreException is >>> thrown when the element being stored is not castable to the element type >>> of the array right? >>> >>> e.g. >>> String[] x = new String[...]; >>> Object[] y = x; >>> y[0] = new Foo(); // array store exception >>> >>> Putting a SimpleJava into a Simple[] should succeed without ASE. >>> >>> When you have >>> >>> simple[0] = (Simple) JSO; >>> >>> GWT semantics allow the cast to succeed, even though JSO doesn't >>> implement Simple. (In regular Java it would be a runtime CCE without >>> classloader magic) >>> >>> Basically, the setCheck() method should be checking if the type being >>> stored is either a JSO or a castable to Simple, if the actual array type >>> is a singleJSO. >>> >>> it should only be an ArrayStoreException if the array were declared as >>> "JsoSimple[] simples" >>> >>> I see the following cases: >>> >>> JsoSimple[] simples; // JSO allowed, ASE thrown if Java instance >>> JavaSimple[] simples; // Java types allow, ASE thrown if JSO >>> Simple[] simples; // JSO and Java types allowed >>> >>> On 2011/06/28 14:52:26, jbrosenberg wrote: >>>> >>>> The problem with that, is as soon as I create a non-JSO Simple object, >>> >>> Simple is >>>> >>>> no longer has a SingleJsoImpl, and so it causes an >>> >>> ArrayStoreException....which >>>> >>>> I think is the expected behavior (so maybe I should make a test to >>> >>> confirm >>>> >>>> that!). >>> >>> http://gwt-code-reviews.appspot.com/1470801/ >>> >> >> -- >> http://groups.google.com/group/Google-Web-Toolkit-Contributors >> >
-- http://groups.google.com/group/Google-Web-Toolkit-Contributors
