Björn Kautler created GROOVY-12309:
--------------------------------------
Summary: Closure calls with Object[] parameter under static
compilation get the wrong argument
Key: GROOVY-12309
URL: https://issues.apache.org/jira/browse/GROOVY-12309
Project: Groovy
Issue Type: Bug
Affects Versions: 4.0.31, 5.0.3, 6.0.0-alpha-1
Reporter: Björn Kautler
With
{code:java}
class Foo {
def foo() {
{ Object[] foo -> println(foo) }.call(new Object[] { 'foo' })
}
}
new Foo().foo() {code}
you get {{[foo]}} printed.
Adding {{@groovy.transform.CompileStatic}} it prints {{{}[[foo]]{}}}.
Removing the {{Object[]}} with added static-compilation it again prints
{{{}[foo]{}}}.
The closure under static compilation should get the same parameter and not
wrapped in another {{{}Object[]{}}}.
This is caused by the {{call}} / {{doCall}} methods generated for the closure.
The {{call}} call where it happens in production is a precompiled Java code
that gives the same argument in either case.
--
This message was sent by Atlassian Jira
(v8.20.10#820010)