You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@groovy.apache.org by "Paul King (JIRA)" <ji...@apache.org> on 2018/03/06 23:26:13 UTC
[jira] [Closed] (GROOVY-8360) Enums that are nested classes do not
have the static modifier set
[ https://issues.apache.org/jira/browse/GROOVY-8360?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Paul King closed GROOVY-8360.
-----------------------------
> Enums that are nested classes do not have the static modifier set
> -----------------------------------------------------------------
>
> Key: GROOVY-8360
> URL: https://issues.apache.org/jira/browse/GROOVY-8360
> Project: Groovy
> Issue Type: Bug
> Components: Compiler
> Affects Versions: 3.x, 2.6.0-alpha-1, 2.4.12, 2.5.0-beta-2
> Reporter: Shil Sinha
> Assignee: Shil Sinha
> Priority: Major
> Fix For: 2.5.0-beta-3
>
>
> In java, enums that are nested classes have the static modifier set i.e. if Bar is an enum defined within a class Foo, {{assert Modifier.isStatic(Foo.Bar.modifiers)}} passes. The assertion does not hold if Foo and Bar are defined in groovy:
> {code}
> class Foo {
> enum Bar {
> X
> }
> }
>
> assert java.lang.reflect.Modifier.isStatic(Foo.Bar.modifiers)
> {code}
> This can be problematic in cases like https://mongodb.github.io/morphia/, where the type of a mapped field cannot be a non-static inner class. Of course that library could also be more enum-aware when validating mapped fields, but that's a separate issue.
> A simple workaround for this issue is to explicitly declare the enum as static, so it's not critical that a patch for this be in 2.4.X if it's considered a breaking change (though no tests fail with the change.)
--
This message was sent by Atlassian JIRA
(v7.6.3#76005)