public static native <T, V> V[] extent(T[] data,
AccessorFunction<T, V> accessor);
@JsFunction
public static interface AccessorFunction<T, V> {
public V get(T d);
}
Uncaught 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:29760)
at java_lang_ClassCastException_ClassCastException__V (dashboard-0.js:57310)
at javaemul_internal_InternalPreconditions_checkCriticalType__ZV (dashboard-0.js:72171)
at javaemul_internal_InternalPreconditions_checkType__ZV (dashboard-0.js:72378)
at com_google_gwt_lang_Cast_castTo__Ljava_lang_Object_2Lcom_google_gwt_core_client_JavaScriptObject_2Ljava_lang_Object_2 (dashboard-0.js:647)
function com_google_gwt_lang_Cast_castTo__Ljava_lang_Object_2Lcom_google_gwt_core_client_JavaScriptObject_2Ljava_lang_Object_2(src_0, dstId){
com_google_gwt_lang_Cast_$clinit__V();
javaemul_internal_InternalPreconditions_checkType__ZV(com_google_gwt_lang_Cast_jsEquals__Ljava_lang_Object_2Ljava_lang_Object_2Z(src_0, null) || com_google_gwt_lang_Cast_canCast__Ljava_lang_Object_2Lcom_google_gwt_core_client_JavaScriptObject_2Z(src_0, dstId));
return src_0;
}
function com_google_gwt_lang_Cast_canCast__Ljava_lang_Object_2Lcom_google_gwt_core_client_JavaScriptObject_2Z(src_0, dstId){
com_google_gwt_lang_Cast_$clinit__V();
if (com_google_gwt_lang_Cast_instanceOfString__Ljava_lang_Object_2Z(src_0)) {
return !!com_google_gwt_lang_Cast_stringCastMap[dstId];
}
else if (src_0.java_lang_Object_castableTypeMap) {
return !!src_0.java_lang_Object_castableTypeMap[dstId];
}
else if (com_google_gwt_lang_Cast_instanceOfDouble__Ljava_lang_Object_2Z(src_0)) {
return !!com_google_gwt_lang_Cast_doubleCastMap[dstId];
}
else if (com_google_gwt_lang_Cast_instanceOfBoolean__Ljava_lang_Object_2Z(src_0)) {
return !!com_google_gwt_lang_Cast_booleanCastMap[dstId];
}
return false;
}
--
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 google-web-toolkit-contributors+unsubscribe@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/google-web-toolkit-contributors/CAKbOjEzUf3LAK90Gnq%2B8B5Yzq7akyZPC%3DJ9ch1DFieqoOCJJVA%40mail.gmail.com.
For more options, visit https://groups.google.com/d/optout.
To unsubscribe from this group and stop receiving emails from it, send an email to google-web-toolkit-co...@googlegroups.com.To view this discussion on the web visit https://groups.google.com/d/msgid/google-web-toolkit-contributors/CAC7T7gnF1A8-xQs%3DORiyp1Ofmp%3D%2B4Hj9JJ%2B2KGsfbT%2B_1JVeTA%40mail.gmail.com.
The example isn't doing instanceof though, it is just making that the return type for the method (albeit through the use of generics). Does this suggest that we should stop using arrays to refer to raw JS data, or at least expect that generics may fail in interesting ways around them (and at runtime of all places)?
elemental2.Array is full of cases where [] or ... are used as arguments, though this includes generic arrays (as opposed to generics _of_ arrays). If I understand you correctly, valid Java code that is passed a String[] or Double[] (or for example Element[]) may fail in exciting ways if passed one of these 'arrays'.
In case those are correctly handled, and it is important only to tell JsInterop about an array of generics instead of generic representing an array, perhaps Vassilis should have another AccessorFunction which handles arrays instead? (Actually maye need 3 more, <T, V[]>, <T[], V>, <T[], V[]>, so I don't think this is a serious suggestion).Otherwise your email seems to suggest that we need a type in jsinterop.base for all JS arrays instead of our current situation of pretending that java arrays and js arrays are compatible.
To unsubscribe from this group and stop receiving emails from it, send an email to google-web-toolkit-contributors+unsu...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/google-web-toolkit-contributors/CAKbOjEzUf3LAK90Gnq%2B8B5Yzq7akyZPC%3DJ9ch1DFieqoOCJJVA%40mail.gmail.com.
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 google-web-toolkit-contributors+unsubscribe@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/google-web-toolkit-contributors/CAC7T7gnF1A8-xQs%3DORiyp1Ofmp%3D%2B4Hj9JJ%2B2KGsfbT%2B_1JVeTA%40mail.gmail.com.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 google-web-toolkit-contributors+unsubscribe@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/google-web-toolkit-contributors/1498497405.2496615.1021798000.4D20C26E%40webmail.messagingengine.com.
To unsubscribe from this group and stop receiving emails from it, send an email to google-web-toolkit-co...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/google-web-toolkit-contributors/CAKbOjEzUf3LAK90Gnq%2B8B5Yzq7akyZPC%3DJ9ch1DFieqoOCJJVA%40mail.gmail.com.
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 google-web-toolkit-co...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/google-web-toolkit-contributors/CAC7T7gnF1A8-xQs%3DORiyp1Ofmp%3D%2B4Hj9JJ%2B2KGsfbT%2B_1JVeTA%40mail.gmail.com.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 google-web-toolkit-co...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/google-web-toolkit-contributors/1498497405.2496615.1021798000.4D20C26E%40webmail.messagingengine.com.
--
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 google-web-toolkit-co...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/google-web-toolkit-contributors/CAC7T7gkT6sJfPZOmf-owaNLXxHyKCBFvhwHbgCasgXqjyCoaYA%40mail.gmail.com.
@RobertoPlease note that I am not mixing stuff (java and js objects in the same array, or different kind of objects in the same array).D3 is doing the correct thing here. If you pass an array of something, let's say T[] you can expect that you will be getting T and T[] out of D3 functions (can't really remember the specifics). What I am passing are pure js objects modeled with jsinterop, and they still count as js, not java. So I am expecting to get back what I feed in / declared at the start.
So what do I want: Double[] to be castable to double[] in the GWT js context (not in the java context). I don't know if this is possible but it is definitely desirable. (The same for String[] and Boolean[]) and a pony of course :-)
Thanks again.
--
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 google-web-toolkit-contributors+unsubscribe@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/google-web-toolkit-contributors/CAKbOjExku8sLUm3Ky7B6OF-gx%3DvgvdP_v8nd-Pi0WNeqzyv06g%40mail.gmail.com.
@RobertoPlease note that I am not mixing stuff (java and js objects in the same array, or different kind of objects in the same array).D3 is doing the correct thing here. If you pass an array of something, let's say T[] you can expect that you will be getting T and T[] out of D3 functions (can't really remember the specifics). What I am passing are pure js objects modeled with jsinterop, and they still count as js, not java. So I am expecting to get back what I feed in / declared at the start.D3 is a JS api, even if some function says it will return an array of T, it is a JavaScript array, so there is no (type) guarantee that the array is of T. So it is an array of things, all of them of type T.A java T[] has even stronger semantics, if you set an element it will check that it is the correct type. So the D3 array is like an Object[] that happens to be filled all with Ts.So what do I want: Double[] to be castable to double[] in the GWT js context (not in the java context). I don't know if this is possible but it is definitely desirable. (The same for String[] and Boolean[]) and a pony of course :-)Again here Double[] and double[] have very different semantics in Java.- you can cast Double[] to Object[] but not double[] to Object[]- you can store nulls in Double[] but not in double[].They are semantically different. I agree that in some circumstances it seems convenient to ignore those. But in general GWT follows Java semantics (with a few exceptions)
Thanks again.
--
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 google-web-toolkit-contributors+unsu...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/google-web-toolkit-contributors/CAKbOjExku8sLUm3Ky7B6OF-gx%3DvgvdP_v8nd-Pi0WNeqzyv06g%40mail.gmail.com.
--
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 google-web-toolkit-contributors+unsubscribe@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/google-web-toolkit-contributors/CAC7T7gkupiRhKbO9CAmnKO9LUSh26veVjnQ0LqAGemeJvFWm9A%40mail.gmail.com.