From 5b5a166c9e7cd89a7064bef369dbd96f599e5e7a Mon Sep 17 00:00:00 2001 From: paulk Date: Fri, 4 Mar 2016 14:41:11 +1000 Subject: [PATCH] GROOVY-7773: Enum constructor with value throws "unexpected token" error (closes #279) --- src/main/org/codehaus/groovy/antlr/groovy.g | 4 ++-- src/test/gls/enums/EnumTest.groovy | 15 +++++++++++++++ 2 files changed, 17 insertions(+), 2 deletions(-) diff --git a/src/main/org/codehaus/groovy/antlr/groovy.g b/src/main/org/codehaus/groovy/antlr/groovy.g index 9ca3abbe188..72a748e52d5 100644 --- a/src/main/org/codehaus/groovy/antlr/groovy.g +++ b/src/main/org/codehaus/groovy/antlr/groovy.g @@ -1192,12 +1192,12 @@ enumConstants : enumConstant ( options {generateAmbigWarnings=false;} : - (nls (RCURLY | classField)) => { break; /* leave ()* loop */ } + (nls (SEMI! | RCURLY | classField)) => { break; /* leave ()* loop */ } | nls! COMMA! ( (nls annotationsOpt IDENT) => nls! enumConstant | - (nls (RCURLY | classField)) => { break; /* leave ()* loop */ } + (nls (SEMI! | RCURLY | classField)) => { break; /* leave ()* loop */ } ) )* ; diff --git a/src/test/gls/enums/EnumTest.groovy b/src/test/gls/enums/EnumTest.groovy index 8f9c152b99e..f858dfd4ffe 100644 --- a/src/test/gls/enums/EnumTest.groovy +++ b/src/test/gls/enums/EnumTest.groovy @@ -577,6 +577,21 @@ class EnumTest extends CompilableTestSupport { println Foonum.Y ''' } + + void testEnumWithPropertiesAndDanglingComma_GROOVY_7773() { + assertScript ''' + enum UsState { + ID('Idaho'), + IL('Illinois'), + IN('Indiana'), + ; + UsState( String value ) { this.value = value } + private final String value + String toString() { value } + } + assert UsState.ID.toString() == 'Idaho' + ''' + } } enum UsCoin {