Need *this* to be an expression and don't need separate node for super type qualifiers - they're all type references

This commit is contained in:
Maxim Shafirov
2011-01-09 00:01:01 +03:00
parent 2ce071dd38
commit 936d3443ea
12 changed files with 77 additions and 39 deletions
@@ -1057,6 +1057,7 @@ public class JetExpressionParsing extends AbstractJetParsing {
*/ */
private void parseThisExpression() { private void parseThisExpression() {
assert _at(THIS_KEYWORD); assert _at(THIS_KEYWORD);
PsiBuilder.Marker mark = mark();
advance(); // THIS_KEYWORD advance(); // THIS_KEYWORD
if (at(LT)) { if (at(LT)) {
// This may be "this < foo" or "this<foo>", thus the backtracking // This may be "this < foo" or "this<foo>", thus the backtracking
@@ -1069,13 +1070,14 @@ public class JetExpressionParsing extends AbstractJetParsing {
if (at(GT)) { if (at(GT)) {
advance(); // GT advance(); // GT
supertype.done(SUPERTYE_QUALIFIER); supertype.drop();
} }
else { else {
supertype.rollbackTo(); supertype.rollbackTo();
} }
myBuilder.restoreNewlinesState(); myBuilder.restoreNewlinesState();
} }
mark.done(THIS_EXPRESSION);
} }
/* /*
@@ -35,6 +35,7 @@ JetFile: AnnotatedExpressions.jet
PsiElement(IDENTIFIER)('a') PsiElement(IDENTIFIER)('a')
PsiElement(RBRACKET)(']') PsiElement(RBRACKET)(']')
PsiWhiteSpace(' ') PsiWhiteSpace(' ')
THIS_EXPRESSION
PsiElement(this)('this') PsiElement(this)('this')
PsiWhiteSpace('\n') PsiWhiteSpace('\n')
PsiElement(RBRACE)('}') PsiElement(RBRACE)('}')
+1
View File
@@ -726,6 +726,7 @@ JetFile: Properties.jet
PsiWhiteSpace(' ') PsiWhiteSpace(' ')
BINARY_EXPRESSION BINARY_EXPRESSION
DOT_QIALIFIED_EXPRESSION DOT_QIALIFIED_EXPRESSION
THIS_EXPRESSION
PsiElement(this)('this') PsiElement(this)('this')
PsiElement(DOT)('.') PsiElement(DOT)('.')
REFERENCE_EXPRESSION REFERENCE_EXPRESSION
+2 -1
View File
@@ -231,6 +231,7 @@ JetFile: SimpleExpressions.jet
PsiWhiteSpace(' ') PsiWhiteSpace(' ')
PsiElement(EQ)('=') PsiElement(EQ)('=')
PsiWhiteSpace(' ') PsiWhiteSpace(' ')
THIS_EXPRESSION
PsiElement(this)('this') PsiElement(this)('this')
PsiElement(COMMA)(',') PsiElement(COMMA)(',')
PsiWhiteSpace('\n ') PsiWhiteSpace('\n ')
@@ -245,8 +246,8 @@ JetFile: SimpleExpressions.jet
PsiWhiteSpace(' ') PsiWhiteSpace(' ')
PsiElement(EQ)('=') PsiElement(EQ)('=')
PsiWhiteSpace(' ') PsiWhiteSpace(' ')
THIS_EXPRESSION
PsiElement(this)('this') PsiElement(this)('this')
SUPERTYE_QUALIFIER
PsiElement(LT)('<') PsiElement(LT)('<')
TYPE_REFERENCE TYPE_REFERENCE
USER_TYPE USER_TYPE
@@ -165,6 +165,7 @@ JetFile: BinaryTree.jet
PsiWhiteSpace('\n ') PsiWhiteSpace('\n ')
BINARY_EXPRESSION BINARY_EXPRESSION
DOT_QIALIFIED_EXPRESSION DOT_QIALIFIED_EXPRESSION
THIS_EXPRESSION
PsiElement(this)('this') PsiElement(this)('this')
PsiElement(DOT)('.') PsiElement(DOT)('.')
REFERENCE_EXPRESSION REFERENCE_EXPRESSION
@@ -263,6 +264,7 @@ JetFile: BinaryTree.jet
VALUE_ARGUMENT_LIST VALUE_ARGUMENT_LIST
PsiElement(LPAR)('(') PsiElement(LPAR)('(')
VALUE_ARGUMENT VALUE_ARGUMENT
THIS_EXPRESSION
PsiElement(this)('this') PsiElement(this)('this')
PsiElement(COMMA)(',') PsiElement(COMMA)(',')
PsiWhiteSpace(' ') PsiWhiteSpace(' ')
@@ -1828,6 +1830,7 @@ JetFile: BinaryTree.jet
REFERENCE_EXPRESSION REFERENCE_EXPRESSION
PsiElement(IDENTIFIER)('BinaryTree') PsiElement(IDENTIFIER)('BinaryTree')
PsiElement(DOT)('.') PsiElement(DOT)('.')
THIS_EXPRESSION
PsiElement(this)('this') PsiElement(this)('this')
PsiElement(DOT)('.') PsiElement(DOT)('.')
REFERENCE_EXPRESSION REFERENCE_EXPRESSION
@@ -2391,6 +2394,7 @@ JetFile: BinaryTree.jet
REFERENCE_EXPRESSION REFERENCE_EXPRESSION
PsiElement(IDENTIFIER)('BinaryTree') PsiElement(IDENTIFIER)('BinaryTree')
PsiElement(DOT)('.') PsiElement(DOT)('.')
THIS_EXPRESSION
PsiElement(this)('this') PsiElement(this)('this')
PsiElement(DOT)('.') PsiElement(DOT)('.')
REFERENCE_EXPRESSION REFERENCE_EXPRESSION
@@ -2435,6 +2439,7 @@ JetFile: BinaryTree.jet
REFERENCE_EXPRESSION REFERENCE_EXPRESSION
PsiElement(IDENTIFIER)('BinaryTree') PsiElement(IDENTIFIER)('BinaryTree')
PsiElement(DOT)('.') PsiElement(DOT)('.')
THIS_EXPRESSION
PsiElement(this)('this') PsiElement(this)('this')
PsiElement(DOT)('.') PsiElement(DOT)('.')
REFERENCE_EXPRESSION REFERENCE_EXPRESSION
+1
View File
@@ -480,6 +480,7 @@ JetFile: BitArith.jet
PsiWhiteSpace(' ') PsiWhiteSpace(' ')
BINARY_EXPRESSION BINARY_EXPRESSION
BINARY_EXPRESSION BINARY_EXPRESSION
THIS_EXPRESSION
PsiElement(this)('this') PsiElement(this)('this')
PsiWhiteSpace(' ') PsiWhiteSpace(' ')
PsiElement(IDENTIFIER)('and') PsiElement(IDENTIFIER)('and')
@@ -332,6 +332,7 @@ JetFile: PolymorphicClassObjects.jet
PsiElement(in)('in') PsiElement(in)('in')
PsiWhiteSpace(' ') PsiWhiteSpace(' ')
LOOP_RANGE LOOP_RANGE
THIS_EXPRESSION
PsiElement(this)('this') PsiElement(this)('this')
PsiElement(RPAR)(')') PsiElement(RPAR)(')')
PsiWhiteSpace(' ') PsiWhiteSpace(' ')
+1
View File
@@ -379,6 +379,7 @@ JetFile: UnionFind.jet
PsiWhiteSpace(' ') PsiWhiteSpace(' ')
BINARY_EXPRESSION BINARY_EXPRESSION
BINARY_EXPRESSION BINARY_EXPRESSION
THIS_EXPRESSION
PsiElement(this)('this') PsiElement(this)('this')
PsiWhiteSpace(' ') PsiWhiteSpace(' ')
PsiElement(PERC)('%') PsiElement(PERC)('%')
@@ -343,6 +343,7 @@ JetFile: ArrayList.jet
REFERENCE_EXPRESSION REFERENCE_EXPRESSION
PsiElement(IDENTIFIER)('ArrayList') PsiElement(IDENTIFIER)('ArrayList')
PsiElement(DOT)('.') PsiElement(DOT)('.')
THIS_EXPRESSION
PsiElement(this)('this') PsiElement(this)('this')
PsiElement(DOT)('.') PsiElement(DOT)('.')
REFERENCE_EXPRESSION REFERENCE_EXPRESSION
@@ -44,6 +44,7 @@ JetFile: HashMap.jet
TUPLE TUPLE
PsiElement(LPAR)('(') PsiElement(LPAR)('(')
BINARY_EXPRESSION BINARY_EXPRESSION
THIS_EXPRESSION
PsiElement(this)('this') PsiElement(this)('this')
PsiWhiteSpace(' ') PsiWhiteSpace(' ')
PsiElement(as)('as') PsiElement(as)('as')
@@ -129,6 +130,7 @@ JetFile: HashMap.jet
TUPLE TUPLE
PsiElement(LPAR)('(') PsiElement(LPAR)('(')
BINARY_EXPRESSION BINARY_EXPRESSION
THIS_EXPRESSION
PsiElement(this)('this') PsiElement(this)('this')
PsiWhiteSpace(' ') PsiWhiteSpace(' ')
PsiElement(as)('as') PsiElement(as)('as')
@@ -353,6 +355,7 @@ JetFile: HashMap.jet
VALUE_ARGUMENT_LIST VALUE_ARGUMENT_LIST
PsiElement(LPAR)('(') PsiElement(LPAR)('(')
VALUE_ARGUMENT VALUE_ARGUMENT
THIS_EXPRESSION
PsiElement(this)('this') PsiElement(this)('this')
PsiElement(RPAR)(')') PsiElement(RPAR)(')')
PsiWhiteSpace('\n\n') PsiWhiteSpace('\n\n')
@@ -184,6 +184,7 @@ JetFile: List.jet
PsiElement(EQ)('=') PsiElement(EQ)('=')
PsiWhiteSpace(' ') PsiWhiteSpace(' ')
BINARY_EXPRESSION BINARY_EXPRESSION
THIS_EXPRESSION
PsiElement(this)('this') PsiElement(this)('this')
PsiWhiteSpace(' ') PsiWhiteSpace(' ')
PsiElement(EQEQ)('==') PsiElement(EQEQ)('==')
@@ -235,6 +236,7 @@ JetFile: List.jet
REFERENCE_EXPRESSION REFERENCE_EXPRESSION
PsiElement(IDENTIFIER)('List') PsiElement(IDENTIFIER)('List')
PsiElement(DOT)('.') PsiElement(DOT)('.')
THIS_EXPRESSION
PsiElement(this)('this') PsiElement(this)('this')
PsiWhiteSpace('\n\n ') PsiWhiteSpace('\n\n ')
CALL_EXPRESSION CALL_EXPRESSION
@@ -120,6 +120,7 @@ JetFile: BinaryHeap.jet
PsiWhiteSpace('\n ') PsiWhiteSpace('\n ')
BINARY_EXPRESSION BINARY_EXPRESSION
DOT_QIALIFIED_EXPRESSION DOT_QIALIFIED_EXPRESSION
THIS_EXPRESSION
PsiElement(this)('this') PsiElement(this)('this')
PsiElement(DOT)('.') PsiElement(DOT)('.')
REFERENCE_EXPRESSION REFERENCE_EXPRESSION
@@ -132,6 +133,7 @@ JetFile: BinaryHeap.jet
PsiWhiteSpace('\n ') PsiWhiteSpace('\n ')
BINARY_EXPRESSION BINARY_EXPRESSION
DOT_QIALIFIED_EXPRESSION DOT_QIALIFIED_EXPRESSION
THIS_EXPRESSION
PsiElement(this)('this') PsiElement(this)('this')
PsiElement(DOT)('.') PsiElement(DOT)('.')
REFERENCE_EXPRESSION REFERENCE_EXPRESSION
@@ -227,6 +229,7 @@ JetFile: BinaryHeap.jet
PsiWhiteSpace('\n ') PsiWhiteSpace('\n ')
BINARY_EXPRESSION BINARY_EXPRESSION
DOT_QIALIFIED_EXPRESSION DOT_QIALIFIED_EXPRESSION
THIS_EXPRESSION
PsiElement(this)('this') PsiElement(this)('this')
PsiElement(DOT)('.') PsiElement(DOT)('.')
REFERENCE_EXPRESSION REFERENCE_EXPRESSION
@@ -239,6 +242,7 @@ JetFile: BinaryHeap.jet
PsiWhiteSpace('\n ') PsiWhiteSpace('\n ')
BINARY_EXPRESSION BINARY_EXPRESSION
DOT_QIALIFIED_EXPRESSION DOT_QIALIFIED_EXPRESSION
THIS_EXPRESSION
PsiElement(this)('this') PsiElement(this)('this')
PsiElement(DOT)('.') PsiElement(DOT)('.')
REFERENCE_EXPRESSION REFERENCE_EXPRESSION
@@ -266,6 +270,7 @@ JetFile: BinaryHeap.jet
PsiWhiteSpace('\n ') PsiWhiteSpace('\n ')
BINARY_EXPRESSION BINARY_EXPRESSION
DOT_QIALIFIED_EXPRESSION DOT_QIALIFIED_EXPRESSION
THIS_EXPRESSION
PsiElement(this)('this') PsiElement(this)('this')
PsiElement(DOT)('.') PsiElement(DOT)('.')
REFERENCE_EXPRESSION REFERENCE_EXPRESSION
@@ -305,6 +310,7 @@ JetFile: BinaryHeap.jet
PsiWhiteSpace('\n ') PsiWhiteSpace('\n ')
BINARY_EXPRESSION BINARY_EXPRESSION
DOT_QIALIFIED_EXPRESSION DOT_QIALIFIED_EXPRESSION
THIS_EXPRESSION
PsiElement(this)('this') PsiElement(this)('this')
PsiElement(DOT)('.') PsiElement(DOT)('.')
REFERENCE_EXPRESSION REFERENCE_EXPRESSION
@@ -352,6 +358,7 @@ JetFile: BinaryHeap.jet
PsiElement(LPAR)('(') PsiElement(LPAR)('(')
CONDITION CONDITION
DOT_QIALIFIED_EXPRESSION DOT_QIALIFIED_EXPRESSION
THIS_EXPRESSION
PsiElement(this)('this') PsiElement(this)('this')
PsiElement(DOT)('.') PsiElement(DOT)('.')
REFERENCE_EXPRESSION REFERENCE_EXPRESSION
@@ -891,6 +898,7 @@ JetFile: BinaryHeap.jet
TUPLE TUPLE
PsiElement(LPAR)('(') PsiElement(LPAR)('(')
BINARY_EXPRESSION BINARY_EXPRESSION
THIS_EXPRESSION
PsiElement(this)('this') PsiElement(this)('this')
PsiWhiteSpace(' ') PsiWhiteSpace(' ')
PsiElement(MINUS)('-') PsiElement(MINUS)('-')
@@ -924,6 +932,7 @@ JetFile: BinaryHeap.jet
PsiWhiteSpace(' ') PsiWhiteSpace(' ')
BINARY_EXPRESSION BINARY_EXPRESSION
BINARY_EXPRESSION BINARY_EXPRESSION
THIS_EXPRESSION
PsiElement(this)('this') PsiElement(this)('this')
PsiWhiteSpace(' ') PsiWhiteSpace(' ')
PsiElement(MUL)('*') PsiElement(MUL)('*')
@@ -956,6 +965,7 @@ JetFile: BinaryHeap.jet
PsiWhiteSpace(' ') PsiWhiteSpace(' ')
BINARY_EXPRESSION BINARY_EXPRESSION
BINARY_EXPRESSION BINARY_EXPRESSION
THIS_EXPRESSION
PsiElement(this)('this') PsiElement(this)('this')
PsiWhiteSpace(' ') PsiWhiteSpace(' ')
PsiElement(MUL)('*') PsiElement(MUL)('*')
@@ -1004,6 +1014,7 @@ JetFile: BinaryHeap.jet
PsiElement(IDENTIFIER)('data') PsiElement(IDENTIFIER)('data')
INDICES INDICES
PsiElement(LBRACKET)('[') PsiElement(LBRACKET)('[')
THIS_EXPRESSION
PsiElement(this)('this') PsiElement(this)('this')
PsiElement(RBRACKET)(']') PsiElement(RBRACKET)(']')
PsiWhiteSpace('\n ') PsiWhiteSpace('\n ')
@@ -1050,6 +1061,7 @@ JetFile: BinaryHeap.jet
TUPLE TUPLE
PsiElement(LPAR)('(') PsiElement(LPAR)('(')
BINARY_EXPRESSION BINARY_EXPRESSION
THIS_EXPRESSION
PsiElement(this)('this') PsiElement(this)('this')
PsiWhiteSpace(' ') PsiWhiteSpace(' ')
PsiElement(LT)('<') PsiElement(LT)('<')
@@ -1067,6 +1079,7 @@ JetFile: BinaryHeap.jet
TUPLE TUPLE
PsiElement(LPAR)('(') PsiElement(LPAR)('(')
BINARY_EXPRESSION BINARY_EXPRESSION
THIS_EXPRESSION
PsiElement(this)('this') PsiElement(this)('this')
PsiWhiteSpace(' ') PsiWhiteSpace(' ')
PsiElement(GTEQ)('>=') PsiElement(GTEQ)('>=')
@@ -1134,6 +1147,7 @@ JetFile: BinaryHeap.jet
VALUE_ARGUMENT_LIST VALUE_ARGUMENT_LIST
PsiElement(LPAR)('(') PsiElement(LPAR)('(')
VALUE_ARGUMENT VALUE_ARGUMENT
THIS_EXPRESSION
PsiElement(this)('this') PsiElement(this)('this')
PsiElement(COMMA)(',') PsiElement(COMMA)(',')
PsiWhiteSpace(' ') PsiWhiteSpace(' ')
@@ -1195,6 +1209,7 @@ JetFile: BinaryHeap.jet
PsiElement(EQ)('=') PsiElement(EQ)('=')
PsiWhiteSpace(' ') PsiWhiteSpace(' ')
ARRAY_ACCESS_EXPRESSION ARRAY_ACCESS_EXPRESSION
THIS_EXPRESSION
PsiElement(this)('this') PsiElement(this)('this')
INDICES INDICES
PsiElement(LBRACKET)('[') PsiElement(LBRACKET)('[')
@@ -1204,6 +1219,7 @@ JetFile: BinaryHeap.jet
PsiWhiteSpace('\n ') PsiWhiteSpace('\n ')
BINARY_EXPRESSION BINARY_EXPRESSION
ARRAY_ACCESS_EXPRESSION ARRAY_ACCESS_EXPRESSION
THIS_EXPRESSION
PsiElement(this)('this') PsiElement(this)('this')
INDICES INDICES
PsiElement(LBRACKET)('[') PsiElement(LBRACKET)('[')
@@ -1214,6 +1230,7 @@ JetFile: BinaryHeap.jet
PsiElement(EQ)('=') PsiElement(EQ)('=')
PsiWhiteSpace(' ') PsiWhiteSpace(' ')
ARRAY_ACCESS_EXPRESSION ARRAY_ACCESS_EXPRESSION
THIS_EXPRESSION
PsiElement(this)('this') PsiElement(this)('this')
INDICES INDICES
PsiElement(LBRACKET)('[') PsiElement(LBRACKET)('[')
@@ -1223,6 +1240,7 @@ JetFile: BinaryHeap.jet
PsiWhiteSpace('\n ') PsiWhiteSpace('\n ')
BINARY_EXPRESSION BINARY_EXPRESSION
ARRAY_ACCESS_EXPRESSION ARRAY_ACCESS_EXPRESSION
THIS_EXPRESSION
PsiElement(this)('this') PsiElement(this)('this')
INDICES INDICES
PsiElement(LBRACKET)('[') PsiElement(LBRACKET)('[')
@@ -1267,6 +1285,7 @@ JetFile: BinaryHeap.jet
PsiWhiteSpace(' ') PsiWhiteSpace(' ')
BINARY_EXPRESSION BINARY_EXPRESSION
DOT_QIALIFIED_EXPRESSION DOT_QIALIFIED_EXPRESSION
THIS_EXPRESSION
PsiElement(this)('this') PsiElement(this)('this')
PsiElement(DOT)('.') PsiElement(DOT)('.')
REFERENCE_EXPRESSION REFERENCE_EXPRESSION