Default values for attributes

This commit is contained in:
Andrey Breslav
2011-01-12 19:09:04 +03:00
parent 20e17fd741
commit 78b5f0f2b8
4 changed files with 66 additions and 3 deletions
+1 -1
View File
@@ -7,5 +7,5 @@ attributeAnnotation
;
attribute
: SimpleName{"."} valueArguments?
: SimpleName{"."} (valueArguments | "=" expression)?
;
@@ -373,14 +373,19 @@ public class JetParsing extends AbstractJetParsing {
/*
* attribute
* // : SimpleName{"."} valueArguments?
* // : SimpleName{"."} (valueArguments | "=" expression)?
* [for recovery: userType valueArguments?]
* ;
*/
private void parseAttribute() {
PsiBuilder.Marker attribute = mark();
parseUserType();
if (at(LPAR)) myExpressionParsing.parseValueArgumentList();
if (at(LPAR)) {
myExpressionParsing.parseValueArgumentList();
} else if (at(EQ)) {
advance(); // EQ
myExpressionParsing.parseExpression();
}
attribute.done(ATTRIBUTE);
}
+3
View File
@@ -20,6 +20,9 @@ out
ref
class Bar<abstract
virtual
[sdfsdf=1+1, a]
[sdfsdf=1+1]
[a(), sdfsdf=1+1]
enum
open
attribute
+55
View File
@@ -137,6 +137,61 @@ JetFile: Attributes.jet
PsiWhiteSpace('\n')
PsiElement(virtual)('virtual')
PsiWhiteSpace('\n')
ATTRIBUTE_ANNOTATION
PsiElement(LBRACKET)('[')
ATTRIBUTE
USER_TYPE
PsiElement(IDENTIFIER)('sdfsdf')
PsiElement(EQ)('=')
BINARY_EXPRESSION
INTEGER_CONSTANT
PsiElement(INTEGER_LITERAL)('1')
PsiElement(PLUS)('+')
INTEGER_CONSTANT
PsiElement(INTEGER_LITERAL)('1')
PsiElement(COMMA)(',')
PsiWhiteSpace(' ')
ATTRIBUTE
USER_TYPE
PsiElement(IDENTIFIER)('a')
PsiElement(RBRACKET)(']')
PsiWhiteSpace('\n')
ATTRIBUTE_ANNOTATION
PsiElement(LBRACKET)('[')
ATTRIBUTE
USER_TYPE
PsiElement(IDENTIFIER)('sdfsdf')
PsiElement(EQ)('=')
BINARY_EXPRESSION
INTEGER_CONSTANT
PsiElement(INTEGER_LITERAL)('1')
PsiElement(PLUS)('+')
INTEGER_CONSTANT
PsiElement(INTEGER_LITERAL)('1')
PsiElement(RBRACKET)(']')
PsiWhiteSpace('\n')
ATTRIBUTE_ANNOTATION
PsiElement(LBRACKET)('[')
ATTRIBUTE
USER_TYPE
PsiElement(IDENTIFIER)('a')
VALUE_ARGUMENT_LIST
PsiElement(LPAR)('(')
PsiElement(RPAR)(')')
PsiElement(COMMA)(',')
PsiWhiteSpace(' ')
ATTRIBUTE
USER_TYPE
PsiElement(IDENTIFIER)('sdfsdf')
PsiElement(EQ)('=')
BINARY_EXPRESSION
INTEGER_CONSTANT
PsiElement(INTEGER_LITERAL)('1')
PsiElement(PLUS)('+')
INTEGER_CONSTANT
PsiElement(INTEGER_LITERAL)('1')
PsiElement(RBRACKET)(']')
PsiWhiteSpace('\n')
PsiElement(enum)('enum')
PsiWhiteSpace('\n')
PsiElement(open)('open')