From 018f5eaca1c9ad8b25973b6e7289f0cf13e4e6e5 Mon Sep 17 00:00:00 2001 From: Andrey Breslav Date: Sun, 2 Jan 2011 17:15:38 +0300 Subject: [PATCH] Enum entry syntax fixed --- grammar/src/class.grm | 6 +++++- grammar/src/enum.grm | 2 +- .../src/org/jetbrains/jet/lang/parsing/JetParsing.java | 5 +++-- idea/testData/psi/Enums.jet | 2 +- idea/testData/psi/Enums.txt | 10 +++++++--- 5 files changed, 17 insertions(+), 8 deletions(-) diff --git a/grammar/src/class.grm b/grammar/src/class.grm index 68cff07020f..f66a6500ea5 100644 --- a/grammar/src/class.grm +++ b/grammar/src/class.grm @@ -14,11 +14,15 @@ class : modifiers "class" SimpleName typeParameters? "wraps"? - ("(" primaryConstructorParameter{","} ")")? + primaryConstructorParameters? (":" attributes delegationSpecifier{","})? (classBody? | enumClassBody) ; +primaryConstructorParameters + : "(" primaryConstructorParameter{","} ")" + ; + typeParameters : "<" typeParameter{","} ">" ("where" typeConstraint{","})? // TODO: Syntax is questionable diff --git a/grammar/src/enum.grm b/grammar/src/enum.grm index adb0eb553ce..422710ae2b2 100644 --- a/grammar/src/enum.grm +++ b/grammar/src/enum.grm @@ -3,5 +3,5 @@ enumClassBody ; enumEntry - : modifiers SimpleName typeParameters? valueParameters? (":" initializer{","})? classBody? + : modifiers SimpleName typeParameters? primaryConstructorParameters? (":" initializer{","})? classBody? ; diff --git a/idea/src/org/jetbrains/jet/lang/parsing/JetParsing.java b/idea/src/org/jetbrains/jet/lang/parsing/JetParsing.java index 850eb5d7e0d..69fab3e2c88 100644 --- a/idea/src/org/jetbrains/jet/lang/parsing/JetParsing.java +++ b/idea/src/org/jetbrains/jet/lang/parsing/JetParsing.java @@ -494,7 +494,7 @@ public class JetParsing extends AbstractJetParsing { /* * enumEntry - * : modifiers SimpleName typeParameters? valueParameters? (":" initializer{","})? classBody? + * : modifiers SimpleName typeParameters? primaryConstructorParameters? (":" initializer{","})? classBody? * ; */ private void parseEnumEntry() { @@ -505,7 +505,8 @@ public class JetParsing extends AbstractJetParsing { parseTypeParameterList(TokenSet.create(COLON, LPAR, SEMICOLON, LBRACE)); if (at(LPAR)) { - parseValueParameterList(false, TokenSet.create(COLON, SEMICOLON, LBRACE)); + parsePrimaryConstructorParameterList(); +// parseValueParameterList(false, TokenSet.create(COLON, SEMICOLON, LBRACE)); } if (at(COLON)) { diff --git a/idea/testData/psi/Enums.jet b/idea/testData/psi/Enums.jet index ce6e7f72675..5653a7d6915 100644 --- a/idea/testData/psi/Enums.jet +++ b/idea/testData/psi/Enums.jet @@ -7,7 +7,7 @@ enum class Color(val rgb : Int) { enum class List(val size : Int) { Nil : List(0) - Cons(value : T, tail : List) : List(/*tail.size + 1*/a) + Cons(val value : T, val tail : List) : List(/*tail.size + 1*/a) val isEmpty : Bool get() = size //> 0 diff --git a/idea/testData/psi/Enums.txt b/idea/testData/psi/Enums.txt index 3a2fe921aea..948b7ddb4df 100644 --- a/idea/testData/psi/Enums.txt +++ b/idea/testData/psi/Enums.txt @@ -149,9 +149,11 @@ JetFile: Enums.jet TYPE_PARAMETER PsiElement(IDENTIFIER)('T') PsiElement(GT)('>') - VALUE_PARAMETER_LIST + PRIMARY_CONSTRUCTOR_PARAMETERS_LIST PsiElement(LPAR)('(') - VALUE_PARAMETER + PRIMARY_CONSTRUCTOR_PARAMETER + PsiElement(val)('val') + PsiWhiteSpace(' ') PsiElement(IDENTIFIER)('value') PsiWhiteSpace(' ') PsiElement(COLON)(':') @@ -161,7 +163,9 @@ JetFile: Enums.jet PsiElement(IDENTIFIER)('T') PsiElement(COMMA)(',') PsiWhiteSpace(' ') - VALUE_PARAMETER + PRIMARY_CONSTRUCTOR_PARAMETER + PsiElement(val)('val') + PsiWhiteSpace(' ') PsiElement(IDENTIFIER)('tail') PsiWhiteSpace(' ') PsiElement(COLON)(':')