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/msgid/google-web-toolkit-contributors/CAKbOjEx1v%3D-%3DVHd0Z5pcgTbKTPzFktR7nxoCx2Sr9yutZHtxiw%40mail.gmail.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to