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 2016/03/03 01:11:18 UTC

[jira] [Commented] (GROOVY-7773) Enum constructor with value throws "unexpected token" error

    [ https://issues.apache.org/jira/browse/GROOVY-7773?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15176771#comment-15176771 ] 

Paul King commented on GROOVY-7773:
-----------------------------------

We did do a slight tweak to the grammar for enums (851fd58). Perhaps it is related to that. If you remove the last comma (i.e. after IN) then your example works. So, I think the priority is fine at least until we look into it more and decide which variations we want to support. Java would require a semicolon after such a dangling comma but we don't support that either. I suspect though that this edge case wasn't noted as a breaking change, I'll mark it as such once I confirm.

> Enum constructor with value throws "unexpected token" error
> -----------------------------------------------------------
>
>                 Key: GROOVY-7773
>                 URL: https://issues.apache.org/jira/browse/GROOVY-7773
>             Project: Groovy
>          Issue Type: Bug
>          Components: Compiler
>    Affects Versions: 2.4.6
>         Environment: Windows 7 Professional
> JDK 1.8.0_45
>            Reporter: Brian Ray
>            Priority: Minor
>
> First time submitter to this JIRA so let me know if I've specified anything incorrectly. I just upgraded from 2.4.4 to 2.4.6 and now declaring an enum constructor accepting a value as follows:
> {code:title=UsStates.groovy}
> enum UsState {
>   
>   ID('Idaho'),
>   IL('Illinois'),
>   IN('Indiana'),
>   
>   UsState( String value ) { this.value = value }
>   private final String value
>   
>   String toString() { return value }
> }
> println UsState.ID //Idaho
> {code}
> throws the following compile error:
> {code}
> org.codehaus.groovy.control.MultipleCompilationErrorsException: startup failed:
> C:\svn_qa\jenkins_trunk\scripts\UsStates.groovy: 7: unexpected token: this @ line 7, column 29.
>      UsState( String value ) { this.value = value }
>                                ^
> 1 error
> {code}
> No such error occurred in 2.4.4, nor does it happen in 2.4.5. Here are a few contrasting things that do seem to work in 2.4.6:
> {code:title=UsStatesBoring.groovy}
> enum UsState {
>   
>   ID,
>   IL,
>   IN,
> }
> println UsState.ID //ID
> {code}
> {code:title=UsStatesNoEnum.groovy}
> class UsState {
>   
>   UsState( String value ) { this.value = value }
>   private final String value
>   
>   String toString() { return value }
> }
> final idaho = new UsState('Idaho')
> println idaho //Idaho
> {code}
> Though this seems higher priority than Minor, I can work around it by simply downgrading to 2.4.5. I wish there was a Medium priority.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)