On Sunday, June 25, 2017 at 1:24:40 PM UTC+2, Vassilis Virvilis wrote:
>
> Ηι,
>
> thanks for answering
>
> d3.ordinal does not exist as you said. However d3.scale.ordinal exists and 
> that part works great.
>

But it is not a type, so you cannot use 'instanceof' on it.
 

> 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.
>

In Java, generics are more or less syntactic sugar for using the erased 
type and casting values. So when using the first one, GWT will, when used 
with O==Ordinal, generate a cast from Object to Ordinal, which IIUC is 
what's causing the error, because your JsType is not a type that can be 
checked (a cast is translated in JS to a type-check using 'instanceof').
 

> 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?
>

I would say no. Your @JsType is wrong. You should either use an interface 
with @JsType(isNative=true, name="?", namespace=JsPackage.GLOBAL), or if 
you want to use fields use a class with @JsType(isNative=true, 
name="Object", namespace=JsPackage.GLOBAL) 

-- 
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/6206fb29-d3c1-48de-ab04-0610cbb3c2bd%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to