[ 
https://issues.apache.org/jira/browse/GROOVY-9860?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17252908#comment-17252908
 ] 

Eric Milles commented on GROOVY-9860:
-------------------------------------

I found the source of the problem in {{makeRawTypes}}: 
https://github.com/apache/groovy/pull/1447

> compilation error when passing a closure's genericized parameters to a 
> constructor under static compilation
> -----------------------------------------------------------------------------------------------------------
>
>                 Key: GROOVY-9860
>                 URL: https://issues.apache.org/jira/browse/GROOVY-9860
>             Project: Groovy
>          Issue Type: Bug
>          Components: Compiler
>    Affects Versions: 3.0.7
>            Reporter: Jason Garrett
>            Assignee: Eric Milles
>            Priority: Minor
>          Time Spent: 10m
>  Remaining Estimate: 0h
>
> The following code:
> {code:java}
> package example
> import groovy.transform.CompileStatic
> @CompileStatic
> class Tuple2Example {
>    static <T> void noLongerCompiles() {
>       def closure = { T a, T b ->
>          return new Tuple2<T, T>(a, b)
>       }
>       closure("foo", "bar")
>    }
> }
> {code}
> Compiles in v3.0.6 and earlier, but in v3.0.7 results in the following 
> compiler error:
> {code:java}
> [Static type checking] - Cannot find matching method 
> groovy.lang.Tuple2#<init>(T, T). Please check if the declared type is correct 
> and if the method exists. @ line 10, column 11.    return new Tuple2<T, T>(a, 
> b)             ^
> 1 error
> {code}
> Because this compiles in all versions prior to 3.0.7, I figure it should 
> compile 3.0.7 too.  Even if it really shouldn't compile the message probably 
> ought to be something about the inability to infer the types of a and b, not 
> that the constructor can't be found.



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

Reply via email to