[
https://issues.apache.org/jira/browse/GROOVY-10054?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Eric Milles updated GROOVY-10054:
---------------------------------
Affects Version/s: (was: 4.0.0)
> STC: Cannot infer lambda parameter types for a stream collector
> ---------------------------------------------------------------
>
> Key: GROOVY-10054
> URL: https://issues.apache.org/jira/browse/GROOVY-10054
> Project: Groovy
> Issue Type: Bug
> Components: Static Type Checker
> Reporter: Lyuben Atanasov
> Assignee: Eric Milles
> Priority: Major
> Attachments: screenshot-1.png
>
>
> This is a follow-up to GROOVY-10049. After the issue there had been fixed I
> was able to progress further with a chain of Stream method calls. However,
> the fix doesn't seem to cover the following case:
> {code}
> import java.util.stream.Collectors;
> class Test {
> static interface Named {
> String getName();
> }
> <T extends Named> Map<String, List<T>> group(Set<T> namedObjects) {
> return namedObjects.stream()
> .collect(Collectors.groupingBy(named ->
> named.getName()));
> }
>
> }
> {code}
> With static type checking enabled, an error is produced:
> {noformat}
> Script_ce61a645759c941d687680111f9bedbd.groovy: 11: [Static type checking] -
> Cannot find matching method java.lang.Object#getName(). Please check if the
> declared type is correct and if the method exists.
> @ line 11, column 44.
> ollectors.groupingBy(named -> named.getN
> {noformat}
> The difference between this issue and GROOVY-10049 is that the lambda passed
> here is not directly assigned to a Stream method. Of course, the issue is
> probably not limited to Collectors, but this is how I am able to reproduce it.
> I've tested this against
> https://github.com/apache/groovy/commit/e07f0112c5eff8d9c6828bd0ddb69e4b7f7cc1d6
--
This message was sent by Atlassian Jira
(v8.20.10#820010)