You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@groovy.apache.org by "Eric Milles (Jira)" <ji...@apache.org> on 2023/01/14 01:59:00 UTC
[jira] [Assigned] (GROOVY-10902) Dynamic constants for primitive types get default value in Java
[ https://issues.apache.org/jira/browse/GROOVY-10902?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Eric Milles reassigned GROOVY-10902:
------------------------------------
Assignee: Eric Milles
> Dynamic constants for primitive types get default value in Java
> ---------------------------------------------------------------
>
> Key: GROOVY-10902
> URL: https://issues.apache.org/jira/browse/GROOVY-10902
> Project: Groovy
> Issue Type: Bug
> Components: Stub generator / Joint compiler
> Affects Versions: 3.0.14, 4.0.7
> Reporter: Onni Koskinen
> Assignee: Eric Milles
> Priority: Major
>
> If we define a constant that is resolved during runtime in a Groovy class and reference it in a Java class, it's value gets a static default value in the Java class. This seems to be a regression in Groovy 3.0.10 as earlier versions don't have the problem. Also affects all 4.0.x versions that I tested.
> Example:
> {code:groovy}
> // G.groovy
> class G {
> public static final int DYNAMIC_CONSTANT = (9.9).intValue()
> } {code}
> {code:java}
> // J.java
> public class J {
> public static void main(String[] args) {
> System.out.println(G.DYNAMIC_CONSTANT);
> }
> } {code}
> *Groovy 4.0.7*
> Prints 0 with the following bytecode for J#main
> {code:java}
> 0: getstatic #2 // Field java/lang/System.out:Ljava/io/PrintStream;
> 3: iconst_0
> 4: invokevirtual #4 // Method java/io/PrintStream.println:(I)V
> 7: return{code}
> *Groovy 3.0.9*
> Correctly prints 9 with the following bytecode:
> {code:java}
> 0: getstatic #2 // Field java/lang/System.out:Ljava/io/PrintStream;
> 3: getstatic #3 // Field G.DYNAMIC_CONSTANT:I
> 6: invokevirtual #4 // Method java/io/PrintStream.println:(I)V
> 9: return {code}
>
>
--
This message was sent by Atlassian Jira
(v8.20.10#820010)