[ 
https://issues.apache.org/jira/browse/GROOVY-9515?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Daniel Sun updated GROOVY-9515:
-------------------------------
    Description: 
{code:java}
import org.codehaus.groovy.control.CompilerConfiguration

def config = new CompilerConfiguration()
config.optimizationOptions.indy = true
new GroovyShell(config).evaluate '''
def x(int a) {a}
def x(int a, int b) {a + b}
def y(p) {
    x(*p)
}
assert 1 == y([1])
assert 3 == y([1, 2])
'''
{code}

Error message:

{code:java}
java.lang.IllegalArgumentException: array is not of length 1

        at Script1.y(Script1.groovy:5)

        at Script1.run(Script1.groovy:8)

        at ConsoleScript1.run(ConsoleScript1:5)

        at 
java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

        at 
java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)

        at 
java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)

        at 
java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

        at 
java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)

        at 
java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)

{code}


> MethodHandle with spread args should not be cached
> --------------------------------------------------
>
>                 Key: GROOVY-9515
>                 URL: https://issues.apache.org/jira/browse/GROOVY-9515
>             Project: Groovy
>          Issue Type: Bug
>          Components: Compiler
>            Reporter: Daniel Sun
>            Assignee: Daniel Sun
>            Priority: Major
>             Fix For: 4.0.0-alpha-1, 3.0.4
>
>          Time Spent: 20m
>  Remaining Estimate: 0h
>
> {code:java}
> import org.codehaus.groovy.control.CompilerConfiguration
> def config = new CompilerConfiguration()
> config.optimizationOptions.indy = true
> new GroovyShell(config).evaluate '''
> def x(int a) {a}
> def x(int a, int b) {a + b}
> def y(p) {
>     x(*p)
> }
> assert 1 == y([1])
> assert 3 == y([1, 2])
> '''
> {code}
> Error message:
> {code:java}
> java.lang.IllegalArgumentException: array is not of length 1
>       at Script1.y(Script1.groovy:5)
>       at Script1.run(Script1.groovy:8)
>       at ConsoleScript1.run(ConsoleScript1:5)
>       at 
> java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>       at 
> java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
>       at 
> java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
>       at 
> java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>       at 
> java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
>       at 
> java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
> {code}



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

Reply via email to