I was not remembering correctly and my last comment was off. I am not using a create() method. So the editorial correction is
s/and have a create() method instead of ordinal() that generates the object//g On Sun, Jun 25, 2017 at 6:23 PM, Vassilis Virvilis <[email protected]> wrote: > Hm... > > For me this d3 ordinal thing like implementing the () operator in c++. Is > it a function with members and methods or is it an object with the ability > to be called as a function? > > Anyway if you and Roberto say it is not a bug then it's not a bug. > > When I revisit my D3 bindings I will explore your proposals - but AFAIK > there is no easy solution that resembles the original javascript API. > Currently I prefer to copy paste among the inheritance pyramid (there are 2 > or 3 subtypes) and have a create() method instead of ordinal() that > generates the object. > > If there is no objection I will post another stumbling block I encountered > in my jsinterop journey. > > > On Sun, Jun 25, 2017 at 5:35 PM, Thomas Broyer <[email protected]> wrote: > >> >> >> 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/ms >> gid/google-web-toolkit-contributors/6206fb29-d3c1-48de-ab04- >> 0610cbb3c2bd%40googlegroups.com >> <https://groups.google.com/d/msgid/google-web-toolkit-contributors/6206fb29-d3c1-48de-ab04-0610cbb3c2bd%40googlegroups.com?utm_medium=email&utm_source=footer> >> . >> >> For more options, visit https://groups.google.com/d/optout. >> > > > > -- > 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/CAKbOjEz_uocutZGGp%3DsvDbUSf1eW9gnziGsCtVOkvd1iGRT%2Bjg%40mail.gmail.com. For more options, visit https://groups.google.com/d/optout.
