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

Reply via email to