[ https://issues.apache.org/jira/browse/GROOVY-11615?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17951781#comment-17951781 ]
Eric Milles commented on GROOVY-11615: -------------------------------------- The specific case given in the description works under Groovy 5. The order of operations was changed slightly for method call checking. Closures and lambdas were visited after finding the candidate method(s). This was extended to method pointer and references, so that all functional elements get the same treatment. This order change allows for more information to reduce the set of candidate methods for "getBytes". Groovy 5 is able to work out a single method and record String instead of Object as the expected argument metadata. The other examples that describe a weakness in the inferencing algorithm around collectors is represented in 10054. > Groovy has trouble type inferencing for Collections. The offender is > Collectors.asBlah set of methods. It needs the generic type <A.Y.X> to be > added explicitly > --------------------------------------------------------------------------------------------------------------------------------------------------------------- > > Key: GROOVY-11615 > URL: https://issues.apache.org/jira/browse/GROOVY-11615 > Project: Groovy > Issue Type: Bug > Components: Static compilation > Affects Versions: 4.0.24 > Reporter: Saravanan > Assignee: Eric Milles > Priority: Minor > > {code:java} > public class Interfaces { > public String myThing() { > var myArray = Arrays.asList("123", "1354"); > var mySet = myArray.stream().collect(Collectors.toSet()); > > // This call will fail > // Failed to find class method 'getBytes(java.lang.Object)' or > // instance method 'getBytes()' for the type: java.lang.String > // To make it work change the previous line to > // var mySet = > myArray.stream().collect(Collectors.<String>toSet()); > mySet.forEach(String::getBytes); > } > }{code} > Most Collectors.<methods> need a fully qualified type for the generic > parameter, without which the compile will fail (sometimes detect an Object > type instead of the right one) -- This message was sent by Atlassian Jira (v8.20.10#820010)