[
https://issues.apache.org/jira/browse/GROOVY-9558?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17141050#comment-17141050
]
Jochen Eddelbuettel commented on GROOVY-9558:
---------------------------------------------
Thanks for tracking this down so quickly. Static compilation is way beyond my
capabilites of analysis, besides describing the symptoms, when I come across
such oddities.
> Wrong code for putAt on Map that is member of closure delegate
> --------------------------------------------------------------
>
> Key: GROOVY-9558
> URL: https://issues.apache.org/jira/browse/GROOVY-9558
> Project: Groovy
> Issue Type: Bug
> Components: Static compilation
> Affects Versions: 3.0.3, 2.5.12
> Environment: Oracle JDK8 1.8.0_162, IntelliJ CE 2019.3.4, indy enabled
> Reporter: Jochen Eddelbuettel
> Assignee: Eric Milles
> Priority: Minor
> Fix For: 4.0.0-alpha-1, 3.0.5, 2.5.13
>
> Time Spent: 0.5h
> Remaining Estimate: 0h
>
>
> I'm compiling this little Closure with @CompileStatic enabled
> {code:java}
> scriptEngine.config.tap {
> // Code generation goes wrong here
> optimizationOptions["indy"] = true
> // This code is generated correctly
> optimizationOptions.indy = true
> }{code}
> {code:java}
> // Generated fault code - obviously no call to getOptimizationOptions()
> boolean var2 =
> true;DefaultGroovyMethods.putAt(((Class)((_main_closure1)this).getDelegate()).cast<invokedynamic>(((_main_closure1)this).getDelegate()),
> "indy", var2);
> // Correct code for the second line, via setProperty
> boolean bool1 =
> true;ScriptBytecodeAdapter.setProperty(Boolean.valueOf(bool1), null,
> ((CompilerConfiguration)((_main_closure1)this).getDelegate()).getOptimizationOptions(),
> (String)"indy");
> {code}
> Compilation works, but I get a runtime error, which is easily explicable
> given the generated code:
> Exception in thread "main"
> org.codehaus.groovy.runtime.typehandling.GroovyCastException: Cannot cast
> object 'org.codehaus.groovy.control.CompilerConfiguration@15d9bc04' with
> class 'org.codehaus.groovy.control.CompilerConfiguration' to class
> 'java.util.Map'
--
This message was sent by Atlassian Jira
(v8.3.4#803005)