groovy-notifications mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Shil Sinha (JIRA)" <j...@apache.org>
Subject [jira] [Created] (GROOVY-8360) Enums that are nested classes do not have the static modifier set
Date Fri, 20 Oct 2017 00:12:00 GMT
Shil Sinha created GROOVY-8360:
----------------------------------

             Summary: 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: 2.5.0-beta-2, 2.4.12, 2.6.0-alpha-1, 3.x
            Reporter: Shil Sinha


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
(v6.4.14#64029)

Mime
View raw message