Daniel Sun created GROOVY-10613:
-----------------------------------

             Summary: Fail to infer correct types for fluent method calls
                 Key: GROOVY-10613
                 URL: https://issues.apache.org/jira/browse/GROOVY-10613
             Project: Groovy
          Issue Type: Bug
          Components: Static Type Checker
            Reporter: Daniel Sun


The following code can not run when STC is enabled:

{code:java}
import java.util.stream.Collectors;

@groovy.transform.CompileStatic
def m() {
    Map<String, Integer> map = new HashMap<>();
    map.put("a", 1);
    map.put("b", 2);

    final Map<String, Integer> result =
            map.entrySet().stream().collect(Collectors.toMap(e -> e.getKey(), e 
-> e.getValue(), (v1, v2) -> v1));

    return result;
}

assert [a:1, b:2] == m();
{code}

Here are the error messages:
{code:java}
3 compilation errors:

[Static type checking] - Cannot find matching method java.lang.Object#getKey(). 
Please check if the declared type is correct and if the method exists.
 at line: 10, column: 67

[Static type checking] - Cannot find matching method 
java.lang.Object#getValue(). Please check if the declared type is correct and 
if the method exists.
 at line: 10, column: 84

[Static type checking] - Incompatible generic argument types. Cannot assign 
java.util.Map<java.lang.Object, java.lang.Object> to: 
java.util.Map<java.lang.String, java.lang.Integer>
 at line: 10, column: 13

{code}




--
This message was sent by Atlassian Jira
(v8.20.7#820007)

Reply via email to