Need references in decomposer's properties list.

This commit is contained in:
Maxim Shafirov
2011-01-09 15:19:42 +03:00
parent c0f70d0ff9
commit 9e20e81500
8 changed files with 60 additions and 30 deletions
@@ -330,10 +330,10 @@ public class JetExpressionParsing extends AbstractJetParsing {
else if (at(IDENTIFIER)) {
if (JetParsing.MODIFIER_KEYWORD_MAP.containsKey(myBuilder.getTokenText())) {
if (!parseLocalDeclaration()) {
parseSimpleName();
parseSimpleNameExpression();
}
} else {
parseSimpleName();
parseSimpleNameExpression();
}
}
else if (at(LBRACE)) {
@@ -544,7 +544,7 @@ public class JetExpressionParsing extends AbstractJetParsing {
/*
* SimpleName
*/
private void parseSimpleName() {
public void parseSimpleNameExpression() {
PsiBuilder.Marker simpleName = mark();
expect(IDENTIFIER, "Expecting an identifier [Interal error]");
simpleName.done(REFERENCE_EXPRESSION);
@@ -276,7 +276,11 @@ public class JetParsing extends AbstractJetParsing {
if (!at(RPAR)) {
while (true) {
parseAttributeList();
if (!expect(IDENTIFIER, "Expecting a property name", TokenSet.create(COMMA, RPAR))) {
if (at(IDENTIFIER)) {
myExpressionParsing.parseSimpleNameExpression();
}
else {
errorWithRecovery("Expecting a property name", TokenSet.create(COMMA, RPAR));
skipUntil(TokenSet.create(COMMA, RPAR, EOL_OR_SEMICOLON));
}
if (!at(COMMA)) {
+10 -5
View File
@@ -5,10 +5,12 @@ JetFile: Decomposers.jet
PsiWhiteSpace(' ')
DECOMPOSER_PROPERTY_LIST
PsiElement(LPAR)('(')
PsiElement(IDENTIFIER)('a')
REFERENCE_EXPRESSION
PsiElement(IDENTIFIER)('a')
PsiElement(COMMA)(',')
PsiWhiteSpace(' ')
PsiElement(IDENTIFIER)('a')
REFERENCE_EXPRESSION
PsiElement(IDENTIFIER)('a')
PsiElement(RPAR)(')')
PsiWhiteSpace('\n')
DECOMPOSER
@@ -50,10 +52,12 @@ JetFile: Decomposers.jet
PsiElement(IDENTIFIER)('bar')
DECOMPOSER_PROPERTY_LIST
PsiElement(LPAR)('(')
PsiElement(IDENTIFIER)('a')
REFERENCE_EXPRESSION
PsiElement(IDENTIFIER)('a')
PsiElement(COMMA)(',')
PsiWhiteSpace(' ')
PsiElement(IDENTIFIER)('a')
REFERENCE_EXPRESSION
PsiElement(IDENTIFIER)('a')
PsiElement(RPAR)(')')
PsiWhiteSpace('\n')
DECOMPOSER
@@ -90,7 +94,8 @@ JetFile: Decomposers.jet
PsiElement(IDENTIFIER)('a')
PsiElement(RBRACKET)(']')
PsiWhiteSpace(' ')
PsiElement(IDENTIFIER)('s')
REFERENCE_EXPRESSION
PsiElement(IDENTIFIER)('s')
PsiElement(RPAR)(')')
PsiWhiteSpace('\n')
DECOMPOSER
+14 -7
View File
@@ -5,7 +5,8 @@ JetFile: Decomposers_ERR.jet
PsiWhiteSpace(' ')
DECOMPOSER_PROPERTY_LIST
PsiElement(LPAR)('(')
PsiElement(IDENTIFIER)('a')
REFERENCE_EXPRESSION
PsiElement(IDENTIFIER)('a')
PsiErrorElement:Expecting ',' or a closing ')'
<empty list>
PsiWhiteSpace(' ')
@@ -48,7 +49,8 @@ JetFile: Decomposers_ERR.jet
<empty list>
PsiElement(COMMA)(',')
PsiWhiteSpace(' ')
PsiElement(IDENTIFIER)('a')
REFERENCE_EXPRESSION
PsiElement(IDENTIFIER)('a')
PsiElement(RPAR)(')')
PsiWhiteSpace('\n')
DECOMPOSER
@@ -86,7 +88,8 @@ JetFile: Decomposers_ERR.jet
PsiElement(IDENTIFIER)('a')
PsiElement(RBRACKET)(']')
PsiWhiteSpace(' ')
PsiElement(IDENTIFIER)('s')
REFERENCE_EXPRESSION
PsiElement(IDENTIFIER)('s')
PsiElement(COMMA)(',')
PsiErrorElement:Expecting a property name
<empty list>
@@ -114,10 +117,12 @@ JetFile: Decomposers_ERR.jet
PsiWhiteSpace(' ')
DECOMPOSER_PROPERTY_LIST
PsiElement(LPAR)('(')
PsiElement(IDENTIFIER)('a')
REFERENCE_EXPRESSION
PsiElement(IDENTIFIER)('a')
PsiElement(COMMA)(',')
PsiWhiteSpace(' ')
PsiElement(IDENTIFIER)('a')
REFERENCE_EXPRESSION
PsiElement(IDENTIFIER)('a')
PsiElement(RPAR)(')')
PsiErrorElement:Cannot define an extension decomposer on a tuple
<empty list>
@@ -167,10 +172,12 @@ JetFile: Decomposers_ERR.jet
PsiElement(IDENTIFIER)('bar')
DECOMPOSER_PROPERTY_LIST
PsiElement(LPAR)('(')
PsiElement(IDENTIFIER)('a')
REFERENCE_EXPRESSION
PsiElement(IDENTIFIER)('a')
PsiElement(COMMA)(',')
PsiWhiteSpace(' ')
PsiElement(IDENTIFIER)('a')
REFERENCE_EXPRESSION
PsiElement(IDENTIFIER)('a')
PsiElement(RPAR)(')')
PsiErrorElement:Expecting namespace or top level declaration
PsiElement(DOT)('.')
+2 -1
View File
@@ -61,7 +61,8 @@ JetFile: EOLsOnRollback.jet
PsiWhiteSpace(' ')
DECOMPOSER_PROPERTY_LIST
PsiElement(LPAR)('(')
PsiElement(IDENTIFIER)('df')
REFERENCE_EXPRESSION
PsiElement(IDENTIFIER)('df')
PsiElement(RPAR)(')')
PsiWhiteSpace('\n\n ')
PROPERTY
+2 -1
View File
@@ -153,7 +153,8 @@ JetFile: LocalDeclarations.jet
PsiElement(IDENTIFIER)('foo')
DECOMPOSER_PROPERTY_LIST
PsiElement(LPAR)('(')
PsiElement(IDENTIFIER)('bar')
REFERENCE_EXPRESSION
PsiElement(IDENTIFIER)('bar')
PsiElement(RPAR)(')')
PsiWhiteSpace('\n')
PsiElement(RBRACE)('}')
+18 -9
View File
@@ -93,13 +93,16 @@ JetFile: SimpleClassMembers.jet
PsiWhiteSpace(' ')
DECOMPOSER_PROPERTY_LIST
PsiElement(LPAR)('(')
PsiElement(IDENTIFIER)('a')
REFERENCE_EXPRESSION
PsiElement(IDENTIFIER)('a')
PsiElement(COMMA)(',')
PsiWhiteSpace(' ')
PsiElement(IDENTIFIER)('b')
REFERENCE_EXPRESSION
PsiElement(IDENTIFIER)('b')
PsiElement(COMMA)(',')
PsiWhiteSpace(' ')
PsiElement(IDENTIFIER)('c')
REFERENCE_EXPRESSION
PsiElement(IDENTIFIER)('c')
PsiElement(RPAR)(')')
PsiWhiteSpace('\n\n ')
CONSTRUCTOR
@@ -338,13 +341,16 @@ JetFile: SimpleClassMembers.jet
PsiWhiteSpace(' ')
DECOMPOSER_PROPERTY_LIST
PsiElement(LPAR)('(')
PsiElement(IDENTIFIER)('a')
REFERENCE_EXPRESSION
PsiElement(IDENTIFIER)('a')
PsiElement(COMMA)(',')
PsiWhiteSpace(' ')
PsiElement(IDENTIFIER)('b')
REFERENCE_EXPRESSION
PsiElement(IDENTIFIER)('b')
PsiElement(COMMA)(',')
PsiWhiteSpace(' ')
PsiElement(IDENTIFIER)('c')
REFERENCE_EXPRESSION
PsiElement(IDENTIFIER)('c')
PsiElement(RPAR)(')')
PsiWhiteSpace('\n\n ')
CONSTRUCTOR
@@ -433,13 +439,16 @@ JetFile: SimpleClassMembers.jet
PsiWhiteSpace(' ')
DECOMPOSER_PROPERTY_LIST
PsiElement(LPAR)('(')
PsiElement(IDENTIFIER)('a')
REFERENCE_EXPRESSION
PsiElement(IDENTIFIER)('a')
PsiElement(COMMA)(',')
PsiWhiteSpace(' ')
PsiElement(IDENTIFIER)('b')
REFERENCE_EXPRESSION
PsiElement(IDENTIFIER)('b')
PsiElement(COMMA)(',')
PsiWhiteSpace(' ')
PsiElement(IDENTIFIER)('c')
REFERENCE_EXPRESSION
PsiElement(IDENTIFIER)('c')
PsiElement(RPAR)(')')
PsiWhiteSpace('\n\n ')
CONSTRUCTOR
+6 -3
View File
@@ -85,13 +85,16 @@ JetFile: SimpleClassMembers_ERR.jet
PsiWhiteSpace(' ')
DECOMPOSER_PROPERTY_LIST
PsiElement(LPAR)('(')
PsiElement(IDENTIFIER)('a')
REFERENCE_EXPRESSION
PsiElement(IDENTIFIER)('a')
PsiElement(COMMA)(',')
PsiWhiteSpace(' ')
PsiElement(IDENTIFIER)('b')
REFERENCE_EXPRESSION
PsiElement(IDENTIFIER)('b')
PsiElement(COMMA)(',')
PsiWhiteSpace(' ')
PsiElement(IDENTIFIER)('c')
REFERENCE_EXPRESSION
PsiElement(IDENTIFIER)('c')
PsiErrorElement:Expecting ',' or a closing ')'
<empty list>
PsiWhiteSpace('\n\n ')