Lyuben Atanasov created GROOVY-10235:
----------------------------------------

             Summary: STC: Generic type of Set not correctly resolved when 
calling ConcurrentHashMap.newKeySet()
                 Key: GROOVY-10235
                 URL: https://issues.apache.org/jira/browse/GROOVY-10235
             Project: Groovy
          Issue Type: Bug
          Components: Static Type Checker
    Affects Versions: 4.0.0-beta-1
         Environment: OpenJDK 8
            Reporter: Lyuben Atanasov


The following code fails to compile when STC is enabled:
{code}
import java.util.concurrent.ConcurrentHashMap;

class Test {

    public void test() {
        Set<Integer> integers = ConcurrentHashMap.newKeySet();
        integers.add(1);
        integers.add(2);
        printSet(integers);
    }

    private void printSet(Set<Integer> integers) {
        println "$integers";
    }
}
{code}
The error reported by the compiler is:
{noformat}
Exception in thread "main" 
org.codehaus.groovy.control.MultipleCompilationErrorsException: startup failed:
Script_a26d7b8defa71ea9b230673f8bc53d80.groovy: 9: [Static type checking] - 
Cannot call Test#printSet(java.util.Set<java.lang.Integer>) with arguments 
[java.util.concurrent.ConcurrentHashMap$KeySetView<java.lang.Object, 
java.lang.Object>]
 @ line 9, column 9.
           printSet(integers);
           ^
{noformat}
This issue is new to 4.0.0-beta-1, it has not been observed before that. It 
looks like the variable definition is treated as if it was {{def integers}} so 
the generic type of the Set is not correctly resolved.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

Reply via email to