Mauro Molinari created GROOVY-9518:
--------------------------------------

             Summary: Closure argument types not inferred when calling a 
constructor
                 Key: GROOVY-9518
                 URL: https://issues.apache.org/jira/browse/GROOVY-9518
             Project: Groovy
          Issue Type: Bug
          Components: Static Type Checker
    Affects Versions: 2.5.11
            Reporter: Mauro Molinari


Consider this Java class:

{code:java}
package test64;

import java.util.List;
import java.util.function.BiConsumer;

public class Test64J<Integer> {

        public Test64J(String foo, BiConsumer<String, ? super List<Integer>> 
bar) {
        }
        
        public void doSomething(String foo, BiConsumer<String, ? super 
List<Integer>> bar) {
        }
}
{code}

and this Groovy class:

{code:groovy}
package test64

import groovy.transform.CompileStatic

@CompileStatic
class Test64 {

        void foobar() {
                Test64J j = new Test64J('hello', { foo, bar ->
                        println(bar.size())
                })
                
                j.doSomething('hello') { foo, bar ->
                        println(bar.size())
                }
        }
}
{code}

The static type checker fails to infer types for {{foo}} and {{bar}} closure 
arguments in the constructor call (hence compilation fails on the first 
{{println}} call, because it does not know {{bar}} is a {{List}}), while it 
succeeds to do the same thing in the method call.



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

Reply via email to