Details
-
Bug
-
Status: Closed
-
Major
-
Resolution: Fixed
-
None
-
None
-
None
Description
Follow up from GROOVY-10339 and possibly related to GROOVY-10047, GROOVY-9998 and GROOVY-9803. Consider the following:
class Pogo { String x } class Sorter implements Comparator<Pogo>, Serializable { int compare(Pogo p1, Pogo p2) { p1.x <=> p2.x } } @groovy.transform.TypeChecked void test(Pogo[] pogos) { List<String> strings = pogos.sort(true, new Sorter()).collect { Pogo pogo -> pogo.x } print strings } test(new Pogo(x:'foo'),new Pogo(x:'bar'))
Current STC has difficulty with multiple type witnesses for the "sort" call, which supplies Pogo[] for T[] and Sorter for Comparator<? super T>.
STC errors:
Incompatible generic argument types. Cannot assign java.util.List<java.lang.Object> to: java.util.List<java.lang.String> Expected parameter of type java.lang.Object but got Pogo No such property: x for class: java.lang.Object
Attachments
Issue Links
- relates to
-
GROOVY-10351 Wrong type argument is inferred on combining use-site variance and diamond operator
- Closed