Renato Athaydes created GROOVY-10513:
----------------------------------------

             Summary: Incorrect bytecode generated for default interface 
methods with array parameter
                 Key: GROOVY-10513
                 URL: https://issues.apache.org/jira/browse/GROOVY-10513
             Project: Groovy
          Issue Type: Bug
          Components: Compiler
    Affects Versions: 4.0.0
            Reporter: Renato Athaydes


Given the following interface:

 

{{interface MyTrait {}}

{{   default String loadKeyStoreFrom(String url, Object... passwordChars) {}}
{{     ''}}
{{   }}}

{{}}}

 

Compile this to a jar file (this matters as the bug does not happen when 
compiled at the same time).

 

Now, run this test:

 

{{package tests}}

{{import org.junit.jupiter.api.Test}}

{{class ExampleTest implements MyTrait {}}

{{   @Test}}
{{   def 'my test'() {}}
{{     assert loadKeyStoreFrom('', ''.chars) == ''}}
{{   }}}

{{}}}

 

I get the following error:

 

{{▶ groovy -cp build/libs/groovy-tests-1.0-SNAPSHOT.jar 
src/test/groovy/tests/ExampleTest.groovy
org.codehaus.groovy.control.MultipleCompilationErrorsException: startup failed:
/experiments/groovy-tests/src/test/groovy/tests/ExampleTest.groovy: -1: The 
method 'java.lang.String loadKeyStoreFrom(java.lang.String, 
[Ljava.lang.Object;)' has an incorrect modifier transient.
 @ line -1, column -1.
1 error
}}

 

This used to work in Groovy 3.0.9. It also works, as mentioned, if you compile 
the interface and the test at the same time.

 

Please notice that this error also happens when using {*}traits{*}, which is 
how I came across the problem.



--
This message was sent by Atlassian Jira
(v8.20.1#820001)

Reply via email to