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 2021/03/29 19:06:00 UTC

[jira] [Updated] (GROOVY-6747) Problem With Anonymous Inner Enum

     [ https://issues.apache.org/jira/browse/GROOVY-6747?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Eric Milles updated GROOVY-6747:
--------------------------------
    Fix Version/s: 3.0.8

> Problem With Anonymous Inner Enum
> ---------------------------------
>
>                 Key: GROOVY-6747
>                 URL: https://issues.apache.org/jira/browse/GROOVY-6747
>             Project: Groovy
>          Issue Type: Bug
>    Affects Versions: 2.1.8, 2.4.0-rc-1
>            Reporter: Jeff Brown
>            Assignee: Eric Milles
>            Priority: Major
>             Fix For: 3.0.8, 4.0.0-alpha-3
>
>         Attachments: enumquestion.zip
>
>          Time Spent: 0.5h
>  Remaining Estimate: 0h
>
> Related to http://jira.grails.org/browse/GRAILS-11348.
> See the attached enumquestion.zip which demonstrates the behavior without involving Grails.  Run "./gradlew test" to see a relevant test failure.
> {code:title=src/main/groovy/com/demo/SampleAppIndicatorCodes.groovy|borderStyle=solid}
> package com.demo
> public enum SampleAppIndicatorCodes {
>     YES("Y") {
>         @Override
>         public String getCode() {
>             return booleanCode;
>         }
>     },
>     NO("N") {
>         @Override
>         public String getCode() {
>             return booleanCode;
>         }
>     };
>     private String booleanCode = null
>     private SampleAppIndicatorCodes(String booleanCode) {
>         this.booleanCode = booleanCode
>     }
>     public abstract String getCode();
>     public static SampleAppIndicatorCodes getSourceIndicator(String booleanCode) {
>         if ("Y".equalsIgnoreCase(booleanCode)) {
>             return YES
>         } else if ("L".equalsIgnoreCase(booleanCode)) {
>             return NO
>         } else {
>             throw new IllegalArgumentException("No  Indicator for the code $booleanCode")
>         }
>    }
> }
> {code}
> {code:title=src/test/groovy/com/demo/SampleAppIndicatorCodesSpec.groovy|borderStyle=solid}
> package com.demo
> import spock.lang.Specification
> class SampleAppIndicatorCodesSpec extends Specification {
>     def 'test accessing YES code'() {
>         expect:
>         'Y' == SampleAppIndicatorCodes.YES.code
>     }
> }
> {code}
> For this particular case the anonymous inner classes seems like a peculiar way to do this but in general apparently this syntax is supposed to be valid.  I ran this example by Jochen this morning and he felt like this is probably a bug.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)