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)