Ηι,

thanks for answering

d3.ordinal does not exist as you said. However d3.scale.ordinal exists and
that part works great.

in d3 ordinal is both a function ordinal() which returns an ordinal
instance and an object with more methods such as range() which is the crux
of my issue.

The problem there is that

   - public native <I, O> O range(I[] values);       *// this doesn't work*
   - // public native <I> Ordinal range(I[] values); *// this works*

I would like to use the first definition because it allows reusing some
code between different scales. Otherwise I have to copy-paste the range()
method multiple times instead of put it in a base class.

The problem is on the exceptions generated by the attempting casting.

As you said this may not be a bug but not for the reason you mentioned.

So the question remains: Should I report it as an issue?

   Vassilis


On Sun, Jun 25, 2017 at 3:24 AM, 'Roberto Lublinerman' via GWT Contributors
<[email protected]> wrote:

> The declaration
>
>   package somepackage;
>
>   @JsNative(isTrue, name = "ordinal")
>   class Ordinal {
>   ....
>   }
>
> effectively says that there is a native type "somepackage.ordinal", which
> d3.ordinal is not.
>
> You can model it as a native interface for example where there is not such
> expectation.
>
> So as I understand your report this is not a bug but just an error in
> modellin
>
> On Sat, Jun 24, 2017 at 7:58 AM, Vassilis Virvilis <[email protected]>
> wrote:
>
>> Originally posted in gwt-users.
>>
>> Two questions:
>>
>>    1. Do you want me to report it as a bug somewhere? and where that
>>    would be?
>>    2. I have two more. Do you want me to post them here or this is not
>>    the right place to post at all?
>>
>>
>>
>> ---------- Forwarded message ----------
>> From: Vassilis Virvilis <[email protected]>
>> Date: Fri, Feb 24, 2017 at 2:26 PM
>> Subject: jsinterop woes: Part 1: instanceof function in generics casting
>> To: [email protected]
>>
>>
>> Hi,
>>
>> again I don't know if this is a bug but it hurts my style
>>
>> D3 defines d3.scale.ordinal as both a function and an object.
>> $wnd.d3.scale.ordinal returns function() in the browser's console though
>>
>>
>>    @JsType(isNative = true, name = "ordinal")
>>>       public static class Ordinal {
>>>            /** @todo TODO: this crashes. Why? */
>>>            public native <I, O> O range(I[] values);       // this
>>> doesn't work
>>>            //public native <I> Ordinal range(I[] values); // this works
>>>       }
>>>
>>
>> I want the generic type because then I can put it in a base class and
>> share some code.
>>
>> I am using it like this
>>
>>> D3.Scale.Ordinal color = D3.Scale.ordinal().range(new String[]
>>> {"#98abc5", "#8a89a6"});
>>>
>>
>> Here is the javascript exception:
>>
>> Error: java.lang.ClassCastException
>>>     at java_lang_ClassCastException_ClassCastException__V.java_lang
>>> _Throwable_createError__Ljava_lang_String_2Ljava_lang_Object_2 [as
>>> package_private$java_lang$createError__Ljava_lang_String_2Ljava_lang_Object_2]
>>> (dashboard-0.js:7245)
>>>     at java_lang_ClassCastException_ClassCastException__V.java_lang
>>> _Throwable_initializeBackingError__V [as 
>>> private$java_lang_Throwable$initializeBackingError__V]
>>> (dashboard-0.js:7300)
>>>     at 
>>> java_lang_ClassCastException_ClassCastException__V.java_lang_Throwable_Throwable__V
>>> (dashboard-0.js:7133)
>>>     at 
>>> java_lang_ClassCastException_ClassCastException__V.java_lang_Exception_Exception__V
>>> (dashboard-0.js:7381)
>>>     at java_lang_ClassCastException_ClassCastException__V.java_lang
>>> _RuntimeException_RuntimeException__V (dashboard-0.js:29724)
>>>     at java_lang_ClassCastException_ClassCastException__V
>>> (dashboard-0.js:57274)
>>>     at javaemul_internal_InternalPreconditions_checkCriticalType__ZV
>>> (dashboard-0.js:72135)
>>>     at javaemul_internal_InternalPreconditions_checkType__ZV
>>> (dashboard-0.js:72342)
>>>     at com_google_gwt_lang_Cast_castToNative__Ljava_lang_Object_2Lc
>>> om_google_gwt_core_client_JavaScriptObject_2Ljava_lang_Object_2
>>> (dashboard-0.js:707)
>>>
>>
>> In
>>
>>> function com_google_gwt_lang_Cast_castToNative__Ljava_lang_Object_2Lc
>>> om_google_gwt_core_client_JavaScriptObject_2Ljava_lang_Object_2(src_0,
>>> jsType){
>>>   com_google_gwt_lang_Cast_$clinit__V();
>>>   javaemul_internal_InternalPreconditions_checkType__ZV(com_go
>>> ogle_gwt_lang_Cast_jsEquals__Ljava_lang_Object_2Ljava_lang_Object_2Z(src_0,
>>> null) || com_google_gwt_lang_Cast_jsinstanceOf__Ljava_lang_Object_2Lc
>>> om_google_gwt_core_client_JavaScriptObject_2Z(src_0, jsType));
>>>   return src_0;
>>> }
>>>
>>
>> Arguments:
>>
>>    - src_0:
>>       - passed:
>>       - evaluated: function scale(x)
>>    - jsType:
>>       - passed: $wnd.scale.ordinal
>>       - evaluated: function anonymous()
>>
>> The reason it fails is that
>>
>>> function com_google_gwt_lang_Cast_jsinstanceOf__Ljava_lang_Object_2Lc
>>> om_google_gwt_core_client_JavaScriptObject_2Z(obj, jsType){
>>>   com_google_gwt_lang_Cast_$clinit__V();
>>>   return obj && (jsType && obj instanceof jsType);
>>> }
>>>
>>
>> obj is src_0 != null and jsType = function anonymous() != null but (obj
>> instanceof jsType) === false
>>
>> Any idea about that?
>>
>> --
>> Vassilis Virvilis
>>
>>
>>
>> --
>> Vassilis Virvilis
>>
>> --
>> You received this message because you are subscribed to the Google Groups
>> "GWT Contributors" group.
>> To unsubscribe from this group and stop receiving emails from it, send an
>> email to [email protected].
>> To view this discussion on the web visit https://groups.google.com/d/ms
>> gid/google-web-toolkit-contributors/CAKbOjEx1v%3D-%3DVHd0Z5p
>> cgTbKTPzFktR7nxoCx2Sr9yutZHtxiw%40mail.gmail.com
>> <https://groups.google.com/d/msgid/google-web-toolkit-contributors/CAKbOjEx1v%3D-%3DVHd0Z5pcgTbKTPzFktR7nxoCx2Sr9yutZHtxiw%40mail.gmail.com?utm_medium=email&utm_source=footer>
>> .
>> For more options, visit https://groups.google.com/d/optout.
>>
>
> --
> You received this message because you are subscribed to the Google Groups
> "GWT Contributors" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to [email protected].
> To view this discussion on the web visit https://groups.google.com/d/
> msgid/google-web-toolkit-contributors/CAC7T7gkBCv_yUPL6-
> f0jcZvMGhpyNWZcNidWdmJ9MO4jcuUL8g%40mail.gmail.com
> <https://groups.google.com/d/msgid/google-web-toolkit-contributors/CAC7T7gkBCv_yUPL6-f0jcZvMGhpyNWZcNidWdmJ9MO4jcuUL8g%40mail.gmail.com?utm_medium=email&utm_source=footer>
> .
> For more options, visit https://groups.google.com/d/optout.
>



-- 
Vassilis Virvilis

-- 
You received this message because you are subscribed to the Google Groups "GWT 
Contributors" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/google-web-toolkit-contributors/CAKbOjEw42gCKXA440auTuGm%2Bc3xq%3D%2B-%2B7awqYEtaCv8HXxAO6w%40mail.gmail.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to