diff --git a/idea/src/org/jetbrains/jet/lang/parsing/JetExpressionParsing.java b/idea/src/org/jetbrains/jet/lang/parsing/JetExpressionParsing.java index bbaacef7776..1344126093b 100644 --- a/idea/src/org/jetbrains/jet/lang/parsing/JetExpressionParsing.java +++ b/idea/src/org/jetbrains/jet/lang/parsing/JetExpressionParsing.java @@ -1057,6 +1057,7 @@ public class JetExpressionParsing extends AbstractJetParsing { */ private void parseThisExpression() { assert _at(THIS_KEYWORD); + PsiBuilder.Marker mark = mark(); advance(); // THIS_KEYWORD if (at(LT)) { // This may be "this < foo" or "this", thus the backtracking @@ -1069,13 +1070,14 @@ public class JetExpressionParsing extends AbstractJetParsing { if (at(GT)) { advance(); // GT - supertype.done(SUPERTYE_QUALIFIER); + supertype.drop(); } else { supertype.rollbackTo(); } myBuilder.restoreNewlinesState(); } + mark.done(THIS_EXPRESSION); } /* diff --git a/idea/testData/psi/AnnotatedExpressions.txt b/idea/testData/psi/AnnotatedExpressions.txt index 77603ff31ec..cdbeafd2645 100644 --- a/idea/testData/psi/AnnotatedExpressions.txt +++ b/idea/testData/psi/AnnotatedExpressions.txt @@ -35,6 +35,7 @@ JetFile: AnnotatedExpressions.jet PsiElement(IDENTIFIER)('a') PsiElement(RBRACKET)(']') PsiWhiteSpace(' ') - PsiElement(this)('this') + THIS_EXPRESSION + PsiElement(this)('this') PsiWhiteSpace('\n') PsiElement(RBRACE)('}') \ No newline at end of file diff --git a/idea/testData/psi/Properties.txt b/idea/testData/psi/Properties.txt index d5f1658bb91..ce9c798c285 100644 --- a/idea/testData/psi/Properties.txt +++ b/idea/testData/psi/Properties.txt @@ -726,7 +726,8 @@ JetFile: Properties.jet PsiWhiteSpace(' ') BINARY_EXPRESSION DOT_QIALIFIED_EXPRESSION - PsiElement(this)('this') + THIS_EXPRESSION + PsiElement(this)('this') PsiElement(DOT)('.') REFERENCE_EXPRESSION PsiElement(IDENTIFIER)('size') diff --git a/idea/testData/psi/SimpleExpressions.txt b/idea/testData/psi/SimpleExpressions.txt index 968d6bdc7fd..c95987fa2a1 100644 --- a/idea/testData/psi/SimpleExpressions.txt +++ b/idea/testData/psi/SimpleExpressions.txt @@ -231,7 +231,8 @@ JetFile: SimpleExpressions.jet PsiWhiteSpace(' ') PsiElement(EQ)('=') PsiWhiteSpace(' ') - PsiElement(this)('this') + THIS_EXPRESSION + PsiElement(this)('this') PsiElement(COMMA)(',') PsiWhiteSpace('\n ') VALUE_PARAMETER @@ -245,8 +246,8 @@ JetFile: SimpleExpressions.jet PsiWhiteSpace(' ') PsiElement(EQ)('=') PsiWhiteSpace(' ') - PsiElement(this)('this') - SUPERTYE_QUALIFIER + THIS_EXPRESSION + PsiElement(this)('this') PsiElement(LT)('<') TYPE_REFERENCE USER_TYPE diff --git a/idea/testData/psi/examples/BinaryTree.txt b/idea/testData/psi/examples/BinaryTree.txt index 7a37616bbb9..1cbf2a19bed 100644 --- a/idea/testData/psi/examples/BinaryTree.txt +++ b/idea/testData/psi/examples/BinaryTree.txt @@ -165,7 +165,8 @@ JetFile: BinaryTree.jet PsiWhiteSpace('\n ') BINARY_EXPRESSION DOT_QIALIFIED_EXPRESSION - PsiElement(this)('this') + THIS_EXPRESSION + PsiElement(this)('this') PsiElement(DOT)('.') REFERENCE_EXPRESSION PsiElement(IDENTIFIER)('compare') @@ -263,7 +264,8 @@ JetFile: BinaryTree.jet VALUE_ARGUMENT_LIST PsiElement(LPAR)('(') VALUE_ARGUMENT - PsiElement(this)('this') + THIS_EXPRESSION + PsiElement(this)('this') PsiElement(COMMA)(',') PsiWhiteSpace(' ') VALUE_ARGUMENT @@ -1828,7 +1830,8 @@ JetFile: BinaryTree.jet REFERENCE_EXPRESSION PsiElement(IDENTIFIER)('BinaryTree') PsiElement(DOT)('.') - PsiElement(this)('this') + THIS_EXPRESSION + PsiElement(this)('this') PsiElement(DOT)('.') REFERENCE_EXPRESSION PsiElement(IDENTIFIER)('version') @@ -2391,7 +2394,8 @@ JetFile: BinaryTree.jet REFERENCE_EXPRESSION PsiElement(IDENTIFIER)('BinaryTree') PsiElement(DOT)('.') - PsiElement(this)('this') + THIS_EXPRESSION + PsiElement(this)('this') PsiElement(DOT)('.') REFERENCE_EXPRESSION PsiElement(IDENTIFIER)('version') @@ -2435,7 +2439,8 @@ JetFile: BinaryTree.jet REFERENCE_EXPRESSION PsiElement(IDENTIFIER)('BinaryTree') PsiElement(DOT)('.') - PsiElement(this)('this') + THIS_EXPRESSION + PsiElement(this)('this') PsiElement(DOT)('.') REFERENCE_EXPRESSION PsiElement(IDENTIFIER)('version') diff --git a/idea/testData/psi/examples/BitArith.txt b/idea/testData/psi/examples/BitArith.txt index f95c1cf7059..9dabc3708fa 100644 --- a/idea/testData/psi/examples/BitArith.txt +++ b/idea/testData/psi/examples/BitArith.txt @@ -480,7 +480,8 @@ JetFile: BitArith.jet PsiWhiteSpace(' ') BINARY_EXPRESSION BINARY_EXPRESSION - PsiElement(this)('this') + THIS_EXPRESSION + PsiElement(this)('this') PsiWhiteSpace(' ') PsiElement(IDENTIFIER)('and') PsiWhiteSpace(' ') diff --git a/idea/testData/psi/examples/PolymorphicClassObjects.txt b/idea/testData/psi/examples/PolymorphicClassObjects.txt index 8ed6e1c1c05..aa9d9b96060 100644 --- a/idea/testData/psi/examples/PolymorphicClassObjects.txt +++ b/idea/testData/psi/examples/PolymorphicClassObjects.txt @@ -332,7 +332,8 @@ JetFile: PolymorphicClassObjects.jet PsiElement(in)('in') PsiWhiteSpace(' ') LOOP_RANGE - PsiElement(this)('this') + THIS_EXPRESSION + PsiElement(this)('this') PsiElement(RPAR)(')') PsiWhiteSpace(' ') BODY diff --git a/idea/testData/psi/examples/UnionFind.txt b/idea/testData/psi/examples/UnionFind.txt index bf5f7509866..6f25999d3e6 100644 --- a/idea/testData/psi/examples/UnionFind.txt +++ b/idea/testData/psi/examples/UnionFind.txt @@ -379,7 +379,8 @@ JetFile: UnionFind.jet PsiWhiteSpace(' ') BINARY_EXPRESSION BINARY_EXPRESSION - PsiElement(this)('this') + THIS_EXPRESSION + PsiElement(this)('this') PsiWhiteSpace(' ') PsiElement(PERC)('%') PsiWhiteSpace(' ') diff --git a/idea/testData/psi/examples/collections/ArrayList.txt b/idea/testData/psi/examples/collections/ArrayList.txt index 8663e98557d..ee7261f8d30 100644 --- a/idea/testData/psi/examples/collections/ArrayList.txt +++ b/idea/testData/psi/examples/collections/ArrayList.txt @@ -343,7 +343,8 @@ JetFile: ArrayList.jet REFERENCE_EXPRESSION PsiElement(IDENTIFIER)('ArrayList') PsiElement(DOT)('.') - PsiElement(this)('this') + THIS_EXPRESSION + PsiElement(this)('this') PsiElement(DOT)('.') REFERENCE_EXPRESSION PsiElement(IDENTIFIER)('remove') diff --git a/idea/testData/psi/examples/collections/HashMap.txt b/idea/testData/psi/examples/collections/HashMap.txt index 77f4368beba..5c51b3d6694 100644 --- a/idea/testData/psi/examples/collections/HashMap.txt +++ b/idea/testData/psi/examples/collections/HashMap.txt @@ -44,7 +44,8 @@ JetFile: HashMap.jet TUPLE PsiElement(LPAR)('(') BINARY_EXPRESSION - PsiElement(this)('this') + THIS_EXPRESSION + PsiElement(this)('this') PsiWhiteSpace(' ') PsiElement(as)('as') PsiWhiteSpace(' ') @@ -129,7 +130,8 @@ JetFile: HashMap.jet TUPLE PsiElement(LPAR)('(') BINARY_EXPRESSION - PsiElement(this)('this') + THIS_EXPRESSION + PsiElement(this)('this') PsiWhiteSpace(' ') PsiElement(as)('as') PsiWhiteSpace(' ') @@ -353,7 +355,8 @@ JetFile: HashMap.jet VALUE_ARGUMENT_LIST PsiElement(LPAR)('(') VALUE_ARGUMENT - PsiElement(this)('this') + THIS_EXPRESSION + PsiElement(this)('this') PsiElement(RPAR)(')') PsiWhiteSpace('\n\n') CLASS diff --git a/idea/testData/psi/examples/collections/List.txt b/idea/testData/psi/examples/collections/List.txt index 5a341cf6445..13b5342d1a1 100644 --- a/idea/testData/psi/examples/collections/List.txt +++ b/idea/testData/psi/examples/collections/List.txt @@ -184,7 +184,8 @@ JetFile: List.jet PsiElement(EQ)('=') PsiWhiteSpace(' ') BINARY_EXPRESSION - PsiElement(this)('this') + THIS_EXPRESSION + PsiElement(this)('this') PsiWhiteSpace(' ') PsiElement(EQEQ)('==') PsiWhiteSpace(' ') @@ -235,7 +236,8 @@ JetFile: List.jet REFERENCE_EXPRESSION PsiElement(IDENTIFIER)('List') PsiElement(DOT)('.') - PsiElement(this)('this') + THIS_EXPRESSION + PsiElement(this)('this') PsiWhiteSpace('\n\n ') CALL_EXPRESSION PROPERTY diff --git a/idea/testData/psi/examples/priorityqueues/BinaryHeap.txt b/idea/testData/psi/examples/priorityqueues/BinaryHeap.txt index 78b1dcfb8db..6e5615f2361 100644 --- a/idea/testData/psi/examples/priorityqueues/BinaryHeap.txt +++ b/idea/testData/psi/examples/priorityqueues/BinaryHeap.txt @@ -120,7 +120,8 @@ JetFile: BinaryHeap.jet PsiWhiteSpace('\n ') BINARY_EXPRESSION DOT_QIALIFIED_EXPRESSION - PsiElement(this)('this') + THIS_EXPRESSION + PsiElement(this)('this') PsiElement(DOT)('.') REFERENCE_EXPRESSION PsiElement(IDENTIFIER)('compare') @@ -132,7 +133,8 @@ JetFile: BinaryHeap.jet PsiWhiteSpace('\n ') BINARY_EXPRESSION DOT_QIALIFIED_EXPRESSION - PsiElement(this)('this') + THIS_EXPRESSION + PsiElement(this)('this') PsiElement(DOT)('.') REFERENCE_EXPRESSION PsiElement(IDENTIFIER)('data') @@ -227,7 +229,8 @@ JetFile: BinaryHeap.jet PsiWhiteSpace('\n ') BINARY_EXPRESSION DOT_QIALIFIED_EXPRESSION - PsiElement(this)('this') + THIS_EXPRESSION + PsiElement(this)('this') PsiElement(DOT)('.') REFERENCE_EXPRESSION PsiElement(IDENTIFIER)('compare') @@ -239,7 +242,8 @@ JetFile: BinaryHeap.jet PsiWhiteSpace('\n ') BINARY_EXPRESSION DOT_QIALIFIED_EXPRESSION - PsiElement(this)('this') + THIS_EXPRESSION + PsiElement(this)('this') PsiElement(DOT)('.') REFERENCE_EXPRESSION PsiElement(IDENTIFIER)('data') @@ -266,7 +270,8 @@ JetFile: BinaryHeap.jet PsiWhiteSpace('\n ') BINARY_EXPRESSION DOT_QIALIFIED_EXPRESSION - PsiElement(this)('this') + THIS_EXPRESSION + PsiElement(this)('this') PsiElement(DOT)('.') REFERENCE_EXPRESSION PsiElement(IDENTIFIER)('data') @@ -305,7 +310,8 @@ JetFile: BinaryHeap.jet PsiWhiteSpace('\n ') BINARY_EXPRESSION DOT_QIALIFIED_EXPRESSION - PsiElement(this)('this') + THIS_EXPRESSION + PsiElement(this)('this') PsiElement(DOT)('.') REFERENCE_EXPRESSION PsiElement(IDENTIFIER)('comparator') @@ -352,7 +358,8 @@ JetFile: BinaryHeap.jet PsiElement(LPAR)('(') CONDITION DOT_QIALIFIED_EXPRESSION - PsiElement(this)('this') + THIS_EXPRESSION + PsiElement(this)('this') PsiElement(DOT)('.') REFERENCE_EXPRESSION PsiElement(IDENTIFIER)('isEmpty') @@ -891,7 +898,8 @@ JetFile: BinaryHeap.jet TUPLE PsiElement(LPAR)('(') BINARY_EXPRESSION - PsiElement(this)('this') + THIS_EXPRESSION + PsiElement(this)('this') PsiWhiteSpace(' ') PsiElement(MINUS)('-') PsiWhiteSpace(' ') @@ -924,7 +932,8 @@ JetFile: BinaryHeap.jet PsiWhiteSpace(' ') BINARY_EXPRESSION BINARY_EXPRESSION - PsiElement(this)('this') + THIS_EXPRESSION + PsiElement(this)('this') PsiWhiteSpace(' ') PsiElement(MUL)('*') PsiWhiteSpace(' ') @@ -956,7 +965,8 @@ JetFile: BinaryHeap.jet PsiWhiteSpace(' ') BINARY_EXPRESSION BINARY_EXPRESSION - PsiElement(this)('this') + THIS_EXPRESSION + PsiElement(this)('this') PsiWhiteSpace(' ') PsiElement(MUL)('*') PsiWhiteSpace(' ') @@ -1004,7 +1014,8 @@ JetFile: BinaryHeap.jet PsiElement(IDENTIFIER)('data') INDICES PsiElement(LBRACKET)('[') - PsiElement(this)('this') + THIS_EXPRESSION + PsiElement(this)('this') PsiElement(RBRACKET)(']') PsiWhiteSpace('\n ') PROPERTY_ACCESSOR @@ -1050,7 +1061,8 @@ JetFile: BinaryHeap.jet TUPLE PsiElement(LPAR)('(') BINARY_EXPRESSION - PsiElement(this)('this') + THIS_EXPRESSION + PsiElement(this)('this') PsiWhiteSpace(' ') PsiElement(LT)('<') PsiWhiteSpace(' ') @@ -1067,7 +1079,8 @@ JetFile: BinaryHeap.jet TUPLE PsiElement(LPAR)('(') BINARY_EXPRESSION - PsiElement(this)('this') + THIS_EXPRESSION + PsiElement(this)('this') PsiWhiteSpace(' ') PsiElement(GTEQ)('>=') PsiWhiteSpace(' ') @@ -1134,7 +1147,8 @@ JetFile: BinaryHeap.jet VALUE_ARGUMENT_LIST PsiElement(LPAR)('(') VALUE_ARGUMENT - PsiElement(this)('this') + THIS_EXPRESSION + PsiElement(this)('this') PsiElement(COMMA)(',') PsiWhiteSpace(' ') VALUE_ARGUMENT @@ -1195,7 +1209,8 @@ JetFile: BinaryHeap.jet PsiElement(EQ)('=') PsiWhiteSpace(' ') ARRAY_ACCESS_EXPRESSION - PsiElement(this)('this') + THIS_EXPRESSION + PsiElement(this)('this') INDICES PsiElement(LBRACKET)('[') REFERENCE_EXPRESSION @@ -1204,7 +1219,8 @@ JetFile: BinaryHeap.jet PsiWhiteSpace('\n ') BINARY_EXPRESSION ARRAY_ACCESS_EXPRESSION - PsiElement(this)('this') + THIS_EXPRESSION + PsiElement(this)('this') INDICES PsiElement(LBRACKET)('[') REFERENCE_EXPRESSION @@ -1214,7 +1230,8 @@ JetFile: BinaryHeap.jet PsiElement(EQ)('=') PsiWhiteSpace(' ') ARRAY_ACCESS_EXPRESSION - PsiElement(this)('this') + THIS_EXPRESSION + PsiElement(this)('this') INDICES PsiElement(LBRACKET)('[') REFERENCE_EXPRESSION @@ -1223,7 +1240,8 @@ JetFile: BinaryHeap.jet PsiWhiteSpace('\n ') BINARY_EXPRESSION ARRAY_ACCESS_EXPRESSION - PsiElement(this)('this') + THIS_EXPRESSION + PsiElement(this)('this') INDICES PsiElement(LBRACKET)('[') REFERENCE_EXPRESSION @@ -1267,7 +1285,8 @@ JetFile: BinaryHeap.jet PsiWhiteSpace(' ') BINARY_EXPRESSION DOT_QIALIFIED_EXPRESSION - PsiElement(this)('this') + THIS_EXPRESSION + PsiElement(this)('this') PsiElement(DOT)('.') REFERENCE_EXPRESSION PsiElement(IDENTIFIER)('size')