[
https://issues.apache.org/jira/browse/GROOVY-9530?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Eric Milles updated GROOVY-9530:
--------------------------------
Language: groovy
> Groovy compiler inlines constants from precompiled classes when it's not safe
> to do so
> --------------------------------------------------------------------------------------
>
> Key: GROOVY-9530
> URL: https://issues.apache.org/jira/browse/GROOVY-9530
> Project: Groovy
> Issue Type: Bug
> Components: Compiler
> Affects Versions: 3.0.3, 2.5.11
> Reporter: Marcin Erdmann
> Priority: Major
>
> When a constant (a {{static final}} field) from a precompiled class (a class
> which is on compilation classpath) is referenced from a declaration of a
> {{static final}} field in a class which is being compiled the compiler will
> load and initialise the precompiled class during compilation and inline the
> value of the referenced constant even if it is not safe to do so, like for
> example if the value of the constant depends on the contents of the classpath
> at runtime.
> The issue does not happen in Groovy 2.4.19 but happens in 2.5.11 and 3.0.3
> The following project exposes the issue:
> https://github.com/erdi/groovy-constant-inlining-bug. If you run {{./gradlew
> :test}} which uses Groovy 2.4.19 it will pass but it will fail if you run
> {{./gradlew :testGroovy2_5}} or {{./gradlew testGroovy3_0}}.
> I believe the problem lies in
> {{org.apache.groovy.ast.tools.ExpressionUtils#transformInlineConstants(org.codehaus.groovy.ast.expr.Expression,
> org.codehaus.groovy.ast.ClassNode)}} when handling property expressions on
> non primary class nodes.
--
This message was sent by Atlassian Jira
(v8.20.10#820010)