Added JetLabeledExpression; added support to parser

This commit is contained in:
Svetlana Isakova
2014-05-14 16:59:59 +04:00
parent f187c4f093
commit 04729f5985
7 changed files with 226 additions and 326 deletions
@@ -128,6 +128,7 @@ public interface JetNodeTypes {
JetNodeType IS_EXPRESSION = new JetNodeType("IS_EXPRESSION", JetIsExpression.class); // TODO: JetNodeType IS_EXPRESSION = new JetNodeType("IS_EXPRESSION", JetIsExpression.class); // TODO:
JetNodeType PREFIX_EXPRESSION = new JetNodeType("PREFIX_EXPRESSION", JetPrefixExpression.class); JetNodeType PREFIX_EXPRESSION = new JetNodeType("PREFIX_EXPRESSION", JetPrefixExpression.class);
JetNodeType POSTFIX_EXPRESSION = new JetNodeType("POSTFIX_EXPRESSION", JetPostfixExpression.class); JetNodeType POSTFIX_EXPRESSION = new JetNodeType("POSTFIX_EXPRESSION", JetPostfixExpression.class);
JetNodeType LABELED_EXPRESSION = new JetNodeType("LABELED_EXPRESSION", JetLabeledExpression.class);
JetNodeType CALL_EXPRESSION = new JetNodeType("CALL_EXPRESSION", JetCallExpression.class); JetNodeType CALL_EXPRESSION = new JetNodeType("CALL_EXPRESSION", JetCallExpression.class);
JetNodeType ARRAY_ACCESS_EXPRESSION = new JetNodeType("ARRAY_ACCESS_EXPRESSION", JetArrayAccessExpression.class); JetNodeType ARRAY_ACCESS_EXPRESSION = new JetNodeType("ARRAY_ACCESS_EXPRESSION", JetArrayAccessExpression.class);
JetNodeType INDICES = new JetNodeType("INDICES", JetContainerNode.class); JetNodeType INDICES = new JetNodeType("INDICES", JetContainerNode.class);
@@ -319,6 +319,17 @@ public class JetExpressionParsing extends AbstractJetParsing {
expression.drop(); expression.drop();
} }
/*
* label prefixExpression
*/
private void parseLabeledExpression() {
assert _at(LABEL_IDENTIFIER);
PsiBuilder.Marker expression = mark();
parseLabel();
parsePrefixExpression();
expression.done(LABELED_EXPRESSION);
}
/* /*
* operation? prefixExpression * operation? prefixExpression
*/ */
@@ -338,7 +349,11 @@ public class JetExpressionParsing extends AbstractJetParsing {
} }
else { else {
myBuilder.disableJoiningComplexTokens(); myBuilder.disableJoiningComplexTokens();
if (atSet(Precedence.PREFIX.getOperations())) { if (at(LABEL_IDENTIFIER)) {
myBuilder.restoreJoiningComplexTokensState();
parseLabeledExpression();
}
else if (atSet(Precedence.PREFIX.getOperations())) {
PsiBuilder.Marker expression = mark(); PsiBuilder.Marker expression = mark();
parseOperationReference(); parseOperationReference();
@@ -501,7 +516,7 @@ public class JetExpressionParsing extends AbstractJetParsing {
while ((at(LBRACE) || at(LABEL_IDENTIFIER) && lookahead(1) == LBRACE)) { while ((at(LBRACE) || at(LABEL_IDENTIFIER) && lookahead(1) == LBRACE)) {
if (!at(LBRACE)) { if (!at(LBRACE)) {
assert _at(LABEL_IDENTIFIER); assert _at(LABEL_IDENTIFIER);
parsePrefixExpression(); parseLabeledExpression();
} }
else { else {
parseFunctionLiteral(); parseFunctionLiteral();
@@ -1399,11 +1414,11 @@ public class JetExpressionParsing extends AbstractJetParsing {
else if (at(LABEL_IDENTIFIER) && lookahead(1) == LBRACE ) { else if (at(LABEL_IDENTIFIER) && lookahead(1) == LBRACE ) {
PsiBuilder.Marker mark = mark(); PsiBuilder.Marker mark = mark();
parseOperationReference(); parseLabel();
parseFunctionLiteral(true); parseFunctionLiteral(true);
mark.done(PREFIX_EXPRESSION); mark.done(LABELED_EXPRESSION);
} }
else { else {
parseExpression(); parseExpression();
@@ -1554,7 +1569,7 @@ public class JetExpressionParsing extends AbstractJetParsing {
advance(); // BREAK_KEYWORD or CONTINUE_KEYWORD advance(); // BREAK_KEYWORD or CONTINUE_KEYWORD
parseLabel(); parseLabelOnTheSameLine();
marker.done(type); marker.done(type);
} }
@@ -1569,7 +1584,7 @@ public class JetExpressionParsing extends AbstractJetParsing {
advance(); // RETURN_KEYWORD advance(); // RETURN_KEYWORD
parseLabel(); parseLabelOnTheSameLine();
if (atSet(EXPRESSION_FIRST) && !at(EOL_OR_SEMICOLON)) parseExpression(); if (atSet(EXPRESSION_FIRST) && !at(EOL_OR_SEMICOLON)) parseExpression();
@@ -1577,18 +1592,26 @@ public class JetExpressionParsing extends AbstractJetParsing {
} }
/* /*
* labels * label?
*/
private void parseLabelOnTheSameLine() {
if (!eol() && at(LABEL_IDENTIFIER)) {
parseLabel();
}
}
/*
* label
*/ */
private void parseLabel() { private void parseLabel() {
if (!eol() && at(LABEL_IDENTIFIER)) { assert _at(LABEL_IDENTIFIER);
PsiBuilder.Marker labelWrap = mark(); PsiBuilder.Marker labelWrap = mark();
PsiBuilder.Marker mark = mark(); PsiBuilder.Marker mark = mark();
advance(); // LABEL_IDENTIFIER advance(); // LABEL_IDENTIFIER
mark.done(LABEL_REFERENCE); mark.done(LABEL_REFERENCE);
labelWrap.done(LABEL_QUALIFIER); labelWrap.done(LABEL_QUALIFIER);
}
} }
/* /*
@@ -1683,7 +1706,7 @@ public class JetExpressionParsing extends AbstractJetParsing {
advance(); // THIS_KEYWORD advance(); // THIS_KEYWORD
thisReference.done(REFERENCE_EXPRESSION); thisReference.done(REFERENCE_EXPRESSION);
parseLabel(); parseLabelOnTheSameLine();
mark.done(THIS_EXPRESSION); mark.done(THIS_EXPRESSION);
} }
@@ -1717,7 +1740,7 @@ public class JetExpressionParsing extends AbstractJetParsing {
} }
myBuilder.restoreNewlinesState(); myBuilder.restoreNewlinesState();
} }
parseLabel(); parseLabelOnTheSameLine();
mark.done(SUPER_EXPRESSION); mark.done(SUPER_EXPRESSION);
} }
@@ -0,0 +1,50 @@
/*
* Copyright 2010-2014 JetBrains s.r.o.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.jetbrains.jet.lang.psi;
/*
* Copyright 2010-2014 JetBrains s.r.o.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
import com.intellij.lang.ASTNode;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
public class JetLabeledExpression extends JetExpressionWithLabel {
public JetLabeledExpression(@NotNull ASTNode node) {
super(node);
}
@Nullable @IfNotParsed
public JetExpression getBaseExpression() {
return findChildByClass(JetExpression.class);
}
}
+8 -6
View File
@@ -199,9 +199,10 @@ JetFile: ControlStructures.kt
BREAK BREAK
PsiElement(break)('break') PsiElement(break)('break')
PsiWhiteSpace('\n ') PsiWhiteSpace('\n ')
PREFIX_EXPRESSION LABELED_EXPRESSION
OPERATION_REFERENCE LABEL_QUALIFIER
PsiElement(LABEL_IDENTIFIER)('@la') LABEL_REFERENCE
PsiElement(LABEL_IDENTIFIER)('@la')
PsiWhiteSpace('\n ') PsiWhiteSpace('\n ')
BREAK BREAK
PsiElement(break)('break') PsiElement(break)('break')
@@ -213,9 +214,10 @@ JetFile: ControlStructures.kt
CONTINUE CONTINUE
PsiElement(continue)('continue') PsiElement(continue)('continue')
PsiWhiteSpace('\n ') PsiWhiteSpace('\n ')
PREFIX_EXPRESSION LABELED_EXPRESSION
OPERATION_REFERENCE LABEL_QUALIFIER
PsiElement(LABEL_IDENTIFIER)('@la') LABEL_REFERENCE
PsiElement(LABEL_IDENTIFIER)('@la')
PsiWhiteSpace('\n ') PsiWhiteSpace('\n ')
CONTINUE CONTINUE
PsiElement(continue)('continue') PsiElement(continue)('continue')
-16
View File
@@ -15,23 +15,14 @@ fun foo() {
return@@ return@@
return@@ 1 return@@ 1
return@@ (@@ 1)
return@@ @@ 1
@a return@@
@a return@@ 1
@a return@@ (@@ 1)
@a return@@ @@ 1
break break
break@ break@
break@a break@a
break@@
continue continue
continue@ continue@
continue@a continue@a
continue@@
a.filter @f{ a.filter @f{
if (1) return if (1) return
@@ -43,18 +34,11 @@ fun foo() {
return@ true return@ true
} }
a.filter @@{
if (1) return
return@@ true
}
this this
this@ this@
this@a this@a
this@@
super<A> super<A>
super<A>@ super<A>@
super<A>@a super<A>@a
super<A>@@
} }
+120 -282
View File
@@ -26,247 +26,147 @@ JetFile: Labels.kt
PsiWhiteSpace(' ') PsiWhiteSpace(' ')
PARENTHESIZED PARENTHESIZED
PsiElement(LPAR)('(') PsiElement(LPAR)('(')
PREFIX_EXPRESSION LABELED_EXPRESSION
OPERATION_REFERENCE LABEL_QUALIFIER
LABEL_REFERENCE
PsiElement(LABEL_IDENTIFIER)('@a')
PsiWhiteSpace(' ')
INTEGER_CONSTANT
PsiElement(INTEGER_LITERAL)('1')
PsiElement(RPAR)(')')
PsiWhiteSpace('\n\n ')
RETURN
PsiElement(return)('return')
PsiErrorElement:Label must be named
PsiElement(LABEL_IDENTIFIER)('@')
PsiWhiteSpace('\n ')
RETURN
PsiElement(return)('return')
PsiErrorElement:Label must be named
PsiElement(LABEL_IDENTIFIER)('@')
PsiWhiteSpace(' ')
INTEGER_CONSTANT
PsiElement(INTEGER_LITERAL)('1')
PsiWhiteSpace('\n ')
RETURN
PsiElement(return)('return')
PsiErrorElement:Label must be named
PsiElement(LABEL_IDENTIFIER)('@')
PsiWhiteSpace(' ')
PARENTHESIZED
PsiElement(LPAR)('(')
LABELED_EXPRESSION
PsiErrorElement:Label must be named
PsiElement(LABEL_IDENTIFIER)('@')
PsiWhiteSpace(' ')
INTEGER_CONSTANT
PsiElement(INTEGER_LITERAL)('1')
PsiElement(RPAR)(')')
PsiWhiteSpace('\n ')
RETURN
PsiElement(return)('return')
PsiErrorElement:Label must be named
PsiElement(LABEL_IDENTIFIER)('@')
PsiWhiteSpace(' ')
LABELED_EXPRESSION
PsiErrorElement:Label must be named
PsiElement(LABEL_IDENTIFIER)('@')
PsiWhiteSpace(' ')
INTEGER_CONSTANT
PsiElement(INTEGER_LITERAL)('1')
PsiWhiteSpace('\n\n ')
RETURN
PsiElement(return)('return')
LABEL_QUALIFIER
LABEL_REFERENCE
PsiElement(LABEL_IDENTIFIER)('@a')
PsiWhiteSpace('\n ')
RETURN
PsiElement(return)('return')
LABEL_QUALIFIER
LABEL_REFERENCE
PsiElement(LABEL_IDENTIFIER)('@a')
PsiWhiteSpace(' ')
INTEGER_CONSTANT
PsiElement(INTEGER_LITERAL)('1')
PsiWhiteSpace('\n ')
RETURN
PsiElement(return)('return')
LABEL_QUALIFIER
LABEL_REFERENCE
PsiElement(LABEL_IDENTIFIER)('@a')
PsiWhiteSpace(' ')
PARENTHESIZED
PsiElement(LPAR)('(')
LABELED_EXPRESSION
LABEL_QUALIFIER
LABEL_REFERENCE
PsiElement(LABEL_IDENTIFIER)('@a')
PsiWhiteSpace(' ')
INTEGER_CONSTANT
PsiElement(INTEGER_LITERAL)('1')
PsiElement(RPAR)(')')
PsiWhiteSpace('\n ')
RETURN
PsiElement(return)('return')
LABEL_QUALIFIER
LABEL_REFERENCE
PsiElement(LABEL_IDENTIFIER)('@a')
PsiWhiteSpace(' ')
LABELED_EXPRESSION
LABEL_QUALIFIER
LABEL_REFERENCE
PsiElement(LABEL_IDENTIFIER)('@a') PsiElement(LABEL_IDENTIFIER)('@a')
PsiWhiteSpace(' ')
INTEGER_CONSTANT
PsiElement(INTEGER_LITERAL)('1')
PsiElement(RPAR)(')')
PsiWhiteSpace('\n\n ')
RETURN
PsiElement(return)('return')
LABEL_QUALIFIER
LABEL_REFERENCE
PsiElement(AT)('@')
PsiWhiteSpace('\n ')
RETURN
PsiElement(return)('return')
LABEL_QUALIFIER
LABEL_REFERENCE
PsiElement(AT)('@')
PsiWhiteSpace(' ')
INTEGER_CONSTANT
PsiElement(INTEGER_LITERAL)('1')
PsiWhiteSpace('\n ')
RETURN
PsiElement(return)('return')
LABEL_QUALIFIER
LABEL_REFERENCE
PsiElement(AT)('@')
PsiWhiteSpace(' ')
PARENTHESIZED
PsiElement(LPAR)('(')
PREFIX_EXPRESSION
OPERATION_REFERENCE
PsiElement(AT)('@')
PsiWhiteSpace(' ')
INTEGER_CONSTANT
PsiElement(INTEGER_LITERAL)('1')
PsiElement(RPAR)(')')
PsiWhiteSpace('\n ')
RETURN
PsiElement(return)('return')
LABEL_QUALIFIER
LABEL_REFERENCE
PsiElement(AT)('@')
PsiWhiteSpace(' ')
PREFIX_EXPRESSION
OPERATION_REFERENCE
PsiElement(AT)('@')
PsiWhiteSpace(' ') PsiWhiteSpace(' ')
INTEGER_CONSTANT INTEGER_CONSTANT
PsiElement(INTEGER_LITERAL)('1') PsiElement(INTEGER_LITERAL)('1')
PsiWhiteSpace('\n\n ') PsiWhiteSpace('\n\n ')
RETURN RETURN
PsiElement(return)('return') PsiElement(return)('return')
LABEL_QUALIFIER PsiErrorElement:Label must be named
LABEL_REFERENCE PsiElement(LABEL_IDENTIFIER)('@')
PsiElement(LABEL_IDENTIFIER)('@a') LABELED_EXPRESSION
PsiWhiteSpace('\n ') PsiErrorElement:Label must be named
RETURN PsiElement(LABEL_IDENTIFIER)('@')
PsiElement(return)('return') PsiWhiteSpace('\n ')
LABEL_QUALIFIER RETURN
LABEL_REFERENCE PsiElement(return)('return')
PsiElement(LABEL_IDENTIFIER)('@a') PsiErrorElement:Label must be named
PsiWhiteSpace(' ') PsiElement(LABEL_IDENTIFIER)('@')
INTEGER_CONSTANT LABELED_EXPRESSION
PsiElement(INTEGER_LITERAL)('1') PsiErrorElement:Label must be named
PsiWhiteSpace('\n ') PsiElement(LABEL_IDENTIFIER)('@')
RETURN
PsiElement(return)('return')
LABEL_QUALIFIER
LABEL_REFERENCE
PsiElement(LABEL_IDENTIFIER)('@a')
PsiWhiteSpace(' ')
PARENTHESIZED
PsiElement(LPAR)('(')
PREFIX_EXPRESSION
OPERATION_REFERENCE
PsiElement(LABEL_IDENTIFIER)('@a')
PsiWhiteSpace(' ')
INTEGER_CONSTANT
PsiElement(INTEGER_LITERAL)('1')
PsiElement(RPAR)(')')
PsiWhiteSpace('\n ')
RETURN
PsiElement(return)('return')
LABEL_QUALIFIER
LABEL_REFERENCE
PsiElement(LABEL_IDENTIFIER)('@a')
PsiWhiteSpace(' ')
PREFIX_EXPRESSION
OPERATION_REFERENCE
PsiElement(LABEL_IDENTIFIER)('@a')
PsiWhiteSpace(' ')
INTEGER_CONSTANT
PsiElement(INTEGER_LITERAL)('1')
PsiWhiteSpace('\n\n ')
RETURN
PsiElement(return)('return')
LABEL_QUALIFIER
LABEL_REFERENCE
PsiElement(ATAT)('@@')
PsiWhiteSpace('\n ')
RETURN
PsiElement(return)('return')
LABEL_QUALIFIER
LABEL_REFERENCE
PsiElement(ATAT)('@@')
PsiWhiteSpace(' ')
INTEGER_CONSTANT
PsiElement(INTEGER_LITERAL)('1')
PsiWhiteSpace('\n ')
RETURN
PsiElement(return)('return')
LABEL_QUALIFIER
LABEL_REFERENCE
PsiElement(ATAT)('@@')
PsiWhiteSpace(' ')
PARENTHESIZED
PsiElement(LPAR)('(')
PREFIX_EXPRESSION
OPERATION_REFERENCE
PsiElement(ATAT)('@@')
PsiWhiteSpace(' ')
INTEGER_CONSTANT
PsiElement(INTEGER_LITERAL)('1')
PsiElement(RPAR)(')')
PsiWhiteSpace('\n ')
RETURN
PsiElement(return)('return')
LABEL_QUALIFIER
LABEL_REFERENCE
PsiElement(ATAT)('@@')
PsiWhiteSpace(' ')
PREFIX_EXPRESSION
OPERATION_REFERENCE
PsiElement(ATAT)('@@')
PsiWhiteSpace(' ')
INTEGER_CONSTANT
PsiElement(INTEGER_LITERAL)('1')
PsiWhiteSpace('\n\n ')
PREFIX_EXPRESSION
OPERATION_REFERENCE
PsiElement(LABEL_IDENTIFIER)('@a')
PsiWhiteSpace(' ')
RETURN
PsiElement(return)('return')
LABEL_QUALIFIER
LABEL_REFERENCE
PsiElement(ATAT)('@@')
PsiWhiteSpace('\n ')
PREFIX_EXPRESSION
OPERATION_REFERENCE
PsiElement(LABEL_IDENTIFIER)('@a')
PsiWhiteSpace(' ')
RETURN
PsiElement(return)('return')
LABEL_QUALIFIER
LABEL_REFERENCE
PsiElement(ATAT)('@@')
PsiWhiteSpace(' ')
INTEGER_CONSTANT
PsiElement(INTEGER_LITERAL)('1')
PsiWhiteSpace('\n ')
PREFIX_EXPRESSION
OPERATION_REFERENCE
PsiElement(LABEL_IDENTIFIER)('@a')
PsiWhiteSpace(' ')
RETURN
PsiElement(return)('return')
LABEL_QUALIFIER
LABEL_REFERENCE
PsiElement(ATAT)('@@')
PsiWhiteSpace(' ')
PARENTHESIZED
PsiElement(LPAR)('(')
PREFIX_EXPRESSION
OPERATION_REFERENCE
PsiElement(ATAT)('@@')
PsiWhiteSpace(' ') PsiWhiteSpace(' ')
INTEGER_CONSTANT INTEGER_CONSTANT
PsiElement(INTEGER_LITERAL)('1') PsiElement(INTEGER_LITERAL)('1')
PsiElement(RPAR)(')')
PsiWhiteSpace('\n ')
PREFIX_EXPRESSION
OPERATION_REFERENCE
PsiElement(LABEL_IDENTIFIER)('@a')
PsiWhiteSpace(' ')
RETURN
PsiElement(return)('return')
LABEL_QUALIFIER
LABEL_REFERENCE
PsiElement(ATAT)('@@')
PsiWhiteSpace(' ')
PREFIX_EXPRESSION
OPERATION_REFERENCE
PsiElement(ATAT)('@@')
PsiWhiteSpace(' ')
INTEGER_CONSTANT
PsiElement(INTEGER_LITERAL)('1')
PsiWhiteSpace('\n\n ') PsiWhiteSpace('\n\n ')
BREAK BREAK
PsiElement(break)('break') PsiElement(break)('break')
PsiWhiteSpace('\n ') PsiWhiteSpace('\n ')
BREAK BREAK
PsiElement(break)('break') PsiElement(break)('break')
LABEL_QUALIFIER PsiErrorElement:Label must be named
LABEL_REFERENCE PsiElement(LABEL_IDENTIFIER)('@')
PsiElement(AT)('@')
PsiWhiteSpace('\n ') PsiWhiteSpace('\n ')
BREAK BREAK
PsiElement(break)('break') PsiElement(break)('break')
LABEL_QUALIFIER LABEL_QUALIFIER
LABEL_REFERENCE LABEL_REFERENCE
PsiElement(LABEL_IDENTIFIER)('@a') PsiElement(LABEL_IDENTIFIER)('@a')
PsiWhiteSpace('\n ')
BREAK
PsiElement(break)('break')
LABEL_QUALIFIER
LABEL_REFERENCE
PsiElement(ATAT)('@@')
PsiWhiteSpace('\n\n ') PsiWhiteSpace('\n\n ')
CONTINUE CONTINUE
PsiElement(continue)('continue') PsiElement(continue)('continue')
PsiWhiteSpace('\n ') PsiWhiteSpace('\n ')
CONTINUE CONTINUE
PsiElement(continue)('continue') PsiElement(continue)('continue')
LABEL_QUALIFIER PsiErrorElement:Label must be named
LABEL_REFERENCE PsiElement(LABEL_IDENTIFIER)('@')
PsiElement(AT)('@')
PsiWhiteSpace('\n ') PsiWhiteSpace('\n ')
CONTINUE CONTINUE
PsiElement(continue)('continue') PsiElement(continue)('continue')
LABEL_QUALIFIER LABEL_QUALIFIER
LABEL_REFERENCE LABEL_REFERENCE
PsiElement(LABEL_IDENTIFIER)('@a') PsiElement(LABEL_IDENTIFIER)('@a')
PsiWhiteSpace('\n ')
CONTINUE
PsiElement(continue)('continue')
LABEL_QUALIFIER
LABEL_REFERENCE
PsiElement(ATAT)('@@')
PsiWhiteSpace('\n\n ') PsiWhiteSpace('\n\n ')
DOT_QUALIFIED_EXPRESSION DOT_QUALIFIED_EXPRESSION
REFERENCE_EXPRESSION REFERENCE_EXPRESSION
@@ -276,9 +176,10 @@ JetFile: Labels.kt
REFERENCE_EXPRESSION REFERENCE_EXPRESSION
PsiElement(IDENTIFIER)('filter') PsiElement(IDENTIFIER)('filter')
PsiWhiteSpace(' ') PsiWhiteSpace(' ')
PREFIX_EXPRESSION LABELED_EXPRESSION
OPERATION_REFERENCE LABEL_QUALIFIER
PsiElement(LABEL_IDENTIFIER)('@f') LABEL_REFERENCE
PsiElement(LABEL_IDENTIFIER)('@f')
FUNCTION_LITERAL_EXPRESSION FUNCTION_LITERAL_EXPRESSION
FUNCTION_LITERAL FUNCTION_LITERAL
PsiElement(LBRACE)('{') PsiElement(LBRACE)('{')
@@ -316,9 +217,9 @@ JetFile: Labels.kt
REFERENCE_EXPRESSION REFERENCE_EXPRESSION
PsiElement(IDENTIFIER)('filter') PsiElement(IDENTIFIER)('filter')
PsiWhiteSpace(' ') PsiWhiteSpace(' ')
PREFIX_EXPRESSION LABELED_EXPRESSION
OPERATION_REFERENCE PsiErrorElement:Label must be named
PsiElement(AT)('@') PsiElement(LABEL_IDENTIFIER)('@')
FUNCTION_LITERAL_EXPRESSION FUNCTION_LITERAL_EXPRESSION
FUNCTION_LITERAL FUNCTION_LITERAL
PsiElement(LBRACE)('{') PsiElement(LBRACE)('{')
@@ -339,49 +240,8 @@ JetFile: Labels.kt
PsiWhiteSpace('\n ') PsiWhiteSpace('\n ')
RETURN RETURN
PsiElement(return)('return') PsiElement(return)('return')
LABEL_QUALIFIER PsiErrorElement:Label must be named
LABEL_REFERENCE PsiElement(LABEL_IDENTIFIER)('@')
PsiElement(AT)('@')
PsiWhiteSpace(' ')
BOOLEAN_CONSTANT
PsiElement(true)('true')
PsiWhiteSpace('\n ')
PsiElement(RBRACE)('}')
PsiWhiteSpace('\n\n ')
DOT_QUALIFIED_EXPRESSION
REFERENCE_EXPRESSION
PsiElement(IDENTIFIER)('a')
PsiElement(DOT)('.')
CALL_EXPRESSION
REFERENCE_EXPRESSION
PsiElement(IDENTIFIER)('filter')
PsiWhiteSpace(' ')
PREFIX_EXPRESSION
OPERATION_REFERENCE
PsiElement(ATAT)('@@')
FUNCTION_LITERAL_EXPRESSION
FUNCTION_LITERAL
PsiElement(LBRACE)('{')
PsiWhiteSpace('\n ')
BLOCK
IF
PsiElement(if)('if')
PsiWhiteSpace(' ')
PsiElement(LPAR)('(')
CONDITION
INTEGER_CONSTANT
PsiElement(INTEGER_LITERAL)('1')
PsiElement(RPAR)(')')
PsiWhiteSpace(' ')
THEN
RETURN
PsiElement(return)('return')
PsiWhiteSpace('\n ')
RETURN
PsiElement(return)('return')
LABEL_QUALIFIER
LABEL_REFERENCE
PsiElement(ATAT)('@@')
PsiWhiteSpace(' ') PsiWhiteSpace(' ')
BOOLEAN_CONSTANT BOOLEAN_CONSTANT
PsiElement(true)('true') PsiElement(true)('true')
@@ -395,9 +255,8 @@ JetFile: Labels.kt
THIS_EXPRESSION THIS_EXPRESSION
REFERENCE_EXPRESSION REFERENCE_EXPRESSION
PsiElement(this)('this') PsiElement(this)('this')
LABEL_QUALIFIER PsiErrorElement:Label must be named
LABEL_REFERENCE PsiElement(LABEL_IDENTIFIER)('@')
PsiElement(AT)('@')
PsiWhiteSpace('\n ') PsiWhiteSpace('\n ')
THIS_EXPRESSION THIS_EXPRESSION
REFERENCE_EXPRESSION REFERENCE_EXPRESSION
@@ -405,13 +264,6 @@ JetFile: Labels.kt
LABEL_QUALIFIER LABEL_QUALIFIER
LABEL_REFERENCE LABEL_REFERENCE
PsiElement(LABEL_IDENTIFIER)('@a') PsiElement(LABEL_IDENTIFIER)('@a')
PsiWhiteSpace('\n ')
THIS_EXPRESSION
REFERENCE_EXPRESSION
PsiElement(this)('this')
LABEL_QUALIFIER
LABEL_REFERENCE
PsiElement(ATAT)('@@')
PsiWhiteSpace('\n\n ') PsiWhiteSpace('\n\n ')
SUPER_EXPRESSION SUPER_EXPRESSION
REFERENCE_EXPRESSION REFERENCE_EXPRESSION
@@ -432,9 +284,8 @@ JetFile: Labels.kt
REFERENCE_EXPRESSION REFERENCE_EXPRESSION
PsiElement(IDENTIFIER)('A') PsiElement(IDENTIFIER)('A')
PsiElement(GT)('>') PsiElement(GT)('>')
LABEL_QUALIFIER PsiErrorElement:Label must be named
LABEL_REFERENCE PsiElement(LABEL_IDENTIFIER)('@')
PsiElement(AT)('@')
PsiWhiteSpace('\n ') PsiWhiteSpace('\n ')
SUPER_EXPRESSION SUPER_EXPRESSION
REFERENCE_EXPRESSION REFERENCE_EXPRESSION
@@ -448,18 +299,5 @@ JetFile: Labels.kt
LABEL_QUALIFIER LABEL_QUALIFIER
LABEL_REFERENCE LABEL_REFERENCE
PsiElement(LABEL_IDENTIFIER)('@a') PsiElement(LABEL_IDENTIFIER)('@a')
PsiWhiteSpace('\n ')
SUPER_EXPRESSION
REFERENCE_EXPRESSION
PsiElement(super)('super')
PsiElement(LT)('<')
TYPE_REFERENCE
USER_TYPE
REFERENCE_EXPRESSION
PsiElement(IDENTIFIER)('A')
PsiElement(GT)('>')
LABEL_QUALIFIER
LABEL_REFERENCE
PsiElement(ATAT)('@@')
PsiWhiteSpace('\n') PsiWhiteSpace('\n')
PsiElement(RBRACE)('}') PsiElement(RBRACE)('}')
+8 -6
View File
@@ -701,9 +701,10 @@ JetFile: SimpleExpressions.kt
BREAK BREAK
PsiElement(break)('break') PsiElement(break)('break')
PsiWhiteSpace('\n ') PsiWhiteSpace('\n ')
PREFIX_EXPRESSION LABELED_EXPRESSION
OPERATION_REFERENCE LABEL_QUALIFIER
PsiElement(LABEL_IDENTIFIER)('@la') LABEL_REFERENCE
PsiElement(LABEL_IDENTIFIER)('@la')
PsiWhiteSpace('\n ') PsiWhiteSpace('\n ')
BREAK BREAK
PsiElement(break)('break') PsiElement(break)('break')
@@ -715,9 +716,10 @@ JetFile: SimpleExpressions.kt
CONTINUE CONTINUE
PsiElement(continue)('continue') PsiElement(continue)('continue')
PsiWhiteSpace('\n ') PsiWhiteSpace('\n ')
PREFIX_EXPRESSION LABELED_EXPRESSION
OPERATION_REFERENCE LABEL_QUALIFIER
PsiElement(LABEL_IDENTIFIER)('@la') LABEL_REFERENCE
PsiElement(LABEL_IDENTIFIER)('@la')
PsiWhiteSpace('\n ') PsiWhiteSpace('\n ')
CONTINUE CONTINUE
PsiElement(continue)('continue') PsiElement(continue)('continue')