[ 
https://issues.apache.org/jira/browse/GROOVY-10053?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Paul King closed GROOVY-10053.
------------------------------

> STC: Wrong type inferred for lambda parameter in a generic method
> -----------------------------------------------------------------
>
>                 Key: GROOVY-10053
>                 URL: https://issues.apache.org/jira/browse/GROOVY-10053
>             Project: Groovy
>          Issue Type: Bug
>          Components: Static Type Checker
>         Environment: OpenJDK8
>            Reporter: Lyuben Atanasov
>            Assignee: Eric Milles
>            Priority: Major
>             Fix For: 4.0.0-beta-1
>
>
> Following the fix of GROOVY-10049, a new issue has appeared. Consider the 
> following code example:
> {code}
> class Test {
>       Set<Number> getNumbers() {
>               // mock return value, needed to demonstrate the issue
>               return Collections.emptySet();
>       }
>       
>       <T extends Number> Set<T> filterNumbers(Class<T> numberType) {
>               Set<T> filteredNumbers = new HashSet<>();
>               getNumbers().stream()
>                       .filter(numberType::isInstance)
>                       .map(numberType::cast)
>                       .forEach(num -> {
>                               filteredNumbers.add(num);
>                       });
>               return filteredNumbers;
>       }
> }
> def test = new Test()'
> test.filterNumbers(Integer);
> {code}
> Compiling with static type checking enabled produces an error:
> {noformat}
> Script_de4295e2a5171ce6c5ecd73605504d73.groovy: 14: [Static type checking] - 
> Cannot call java.util.Set#add(T) with arguments [R] 
>  @ line 14, column 5.
>                               filteredNumbers.add(num);
> {noformat}
> This used to work fine before applying the fix for GROOVY-10049. Tested 
> against 
> https://github.com/apache/groovy/commit/e07f0112c5eff8d9c6828bd0ddb69e4b7f7cc1d6



--
This message was sent by Atlassian Jira
(v8.20.1#820001)

Reply via email to