[ https://issues.apache.org/jira/browse/GROOVY-8342?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Paul King resolved GROOVY-8342. ------------------------------- Resolution: Fixed Assignee: Paul King Fix Version/s: 2.5.3 3.0.0-alpha-4 Incorporated Eric's suggested change. > Static compilation error with a method returning an array in a type parameter > ----------------------------------------------------------------------------- > > Key: GROOVY-8342 > URL: https://issues.apache.org/jira/browse/GROOVY-8342 > Project: Groovy > Issue Type: Bug > Components: Static compilation > Reporter: M. Justin > Assignee: Paul King > Priority: Major > Fix For: 3.0.0-alpha-4, 2.5.3 > > > A compilation error occurs when using static compilation and attempting to > assign the result of a method that returns a parameterized argument that > contains an array in the type parameter. The equivalent Java code has no > issues. > Here is a specific example: > {code}@CompileStatic > class ArrayGenericsIssue { > static void main(String[] args) { > Optional<Integer[]> value = testArrayMethod(1) //This fails to compile > } > static <E> Optional<E[]> testArrayMethod(E ignored) { > return Optional.empty() > } > }{code} > The error returned is: > {code}Error:(11, 33) Groovyc: [Static type checking] - Incompatible generic > argument types. Cannot assign java.util.Optional <E[]> to: java.util.Optional > <Integer[]>{code} > The expected behavior is that this code would compile and run successfully > with @CompileStatic enabled. > Note that equivalent code with a non-array generic parameter works just fine: > {code} > static void main(String[] args) { > Optional<List<Integer>> value = testListMethod(1) > } > static <E> Optional<List<E>> testListMethod(E ignored) { > return Optional.empty() > } > {code} > Additionally, there is no compilation issue if the value is cast: > {code}Optional<Integer[]> value = (Optional<Integer[]>) > testArrayMethod(1){code} > For some context, I'm running into this issue when working with > [jOOQ|https://www.jooq.org/], as some of its API involves working with array > type parameters. -- This message was sent by Atlassian JIRA (v7.6.3#76005)