[ 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)