Temporary parse label definitions with both syntax versions
Should be reverted after bootstrap
This commit is contained in:
@@ -554,10 +554,15 @@ public class JetExpressionParsing extends AbstractJetParsing {
|
|||||||
return lookahead(2) == LBRACE;
|
return lookahead(2) == LBRACE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (at(AT) && myBuilder.rawLookup(1) == IDENTIFIER) {
|
||||||
|
return lookahead(2) == LBRACE;
|
||||||
|
}
|
||||||
|
|
||||||
return at(AT) && lookahead(1) == LBRACE;
|
return at(AT) && lookahead(1) == LBRACE;
|
||||||
}
|
}
|
||||||
|
|
||||||
private boolean isAtLabelDefinitionOrMissingIdentifier() {
|
private boolean isAtLabelDefinitionOrMissingIdentifier() {
|
||||||
|
if (at(AT) && myBuilder.rawLookup(1) == IDENTIFIER) return true;
|
||||||
return (at(IDENTIFIER) && myBuilder.rawLookup(1) == AT) || at(AT);
|
return (at(IDENTIFIER) && myBuilder.rawLookup(1) == AT) || at(AT);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1659,8 +1664,22 @@ public class JetExpressionParsing extends AbstractJetParsing {
|
|||||||
*/
|
*/
|
||||||
private void parseLabelDefinition() {
|
private void parseLabelDefinition() {
|
||||||
if (at(AT)) {
|
if (at(AT)) {
|
||||||
// recovery for empty label identifier
|
// recovery for old label syntax or empty label identifier
|
||||||
errorAndAdvance("Label must be named"); // AT
|
if (myBuilder.rawLookup(1) == IDENTIFIER) {
|
||||||
|
PsiBuilder.Marker labelWrap = mark();
|
||||||
|
PsiBuilder.Marker mark = mark();
|
||||||
|
|
||||||
|
advance(); // AT
|
||||||
|
advance(); // IDENTIFIER
|
||||||
|
|
||||||
|
mark.done(LABEL);
|
||||||
|
|
||||||
|
labelWrap.done(LABEL_QUALIFIER);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
errorAndAdvance("Label must be named"); // AT
|
||||||
|
}
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -13,61 +13,63 @@ JetFile: oldSyntaxExpressions.kt
|
|||||||
PsiElement(LBRACE)('{')
|
PsiElement(LBRACE)('{')
|
||||||
PsiWhiteSpace('\n ')
|
PsiWhiteSpace('\n ')
|
||||||
LABELED_EXPRESSION
|
LABELED_EXPRESSION
|
||||||
PsiErrorElement:Label must be named
|
LABEL_QUALIFIER
|
||||||
PsiElement(AT)('@')
|
LABEL
|
||||||
REFERENCE_EXPRESSION
|
PsiElement(AT)('@')
|
||||||
PsiElement(IDENTIFIER)('loop1')
|
PsiElement(IDENTIFIER)('loop1')
|
||||||
PsiErrorElement:Unexpected tokens (use ';' to separate expressions on the same line)
|
|
||||||
<empty list>
|
|
||||||
PsiWhiteSpace(' ')
|
|
||||||
FOR
|
|
||||||
PsiElement(for)('for')
|
|
||||||
PsiWhiteSpace(' ')
|
PsiWhiteSpace(' ')
|
||||||
PsiElement(LPAR)('(')
|
FOR
|
||||||
VALUE_PARAMETER
|
PsiElement(for)('for')
|
||||||
PsiElement(IDENTIFIER)('i')
|
PsiWhiteSpace(' ')
|
||||||
PsiWhiteSpace(' ')
|
PsiElement(LPAR)('(')
|
||||||
PsiElement(in)('in')
|
VALUE_PARAMETER
|
||||||
PsiWhiteSpace(' ')
|
PsiElement(IDENTIFIER)('i')
|
||||||
LOOP_RANGE
|
PsiWhiteSpace(' ')
|
||||||
BINARY_EXPRESSION
|
PsiElement(in)('in')
|
||||||
INTEGER_CONSTANT
|
PsiWhiteSpace(' ')
|
||||||
PsiElement(INTEGER_LITERAL)('1')
|
LOOP_RANGE
|
||||||
OPERATION_REFERENCE
|
BINARY_EXPRESSION
|
||||||
PsiElement(RANGE)('..')
|
INTEGER_CONSTANT
|
||||||
INTEGER_CONSTANT
|
PsiElement(INTEGER_LITERAL)('1')
|
||||||
PsiElement(INTEGER_LITERAL)('100')
|
OPERATION_REFERENCE
|
||||||
PsiElement(RPAR)(')')
|
PsiElement(RANGE)('..')
|
||||||
PsiWhiteSpace(' ')
|
INTEGER_CONSTANT
|
||||||
BODY
|
PsiElement(INTEGER_LITERAL)('100')
|
||||||
BLOCK
|
PsiElement(RPAR)(')')
|
||||||
PsiElement(LBRACE)('{')
|
PsiWhiteSpace(' ')
|
||||||
PsiWhiteSpace(' ')
|
BODY
|
||||||
PsiElement(RBRACE)('}')
|
BLOCK
|
||||||
|
PsiElement(LBRACE)('{')
|
||||||
|
PsiWhiteSpace(' ')
|
||||||
|
PsiElement(RBRACE)('}')
|
||||||
PsiWhiteSpace('\n\n ')
|
PsiWhiteSpace('\n\n ')
|
||||||
DOT_QUALIFIED_EXPRESSION
|
DOT_QUALIFIED_EXPRESSION
|
||||||
REFERENCE_EXPRESSION
|
REFERENCE_EXPRESSION
|
||||||
PsiElement(IDENTIFIER)('x2')
|
PsiElement(IDENTIFIER)('x2')
|
||||||
PsiElement(DOT)('.')
|
PsiElement(DOT)('.')
|
||||||
REFERENCE_EXPRESSION
|
CALL_EXPRESSION
|
||||||
PsiElement(IDENTIFIER)('filter')
|
REFERENCE_EXPRESSION
|
||||||
PsiWhiteSpace(' ')
|
PsiElement(IDENTIFIER)('filter')
|
||||||
PsiErrorElement:Unexpected tokens (use ';' to separate expressions on the same line)
|
PsiWhiteSpace(' ')
|
||||||
PsiElement(AT)('@')
|
FUNCTION_LITERAL_ARGUMENT
|
||||||
PsiElement(IDENTIFIER)('f')
|
LABELED_EXPRESSION
|
||||||
PsiWhiteSpace(' ')
|
LABEL_QUALIFIER
|
||||||
FUNCTION_LITERAL_EXPRESSION
|
LABEL
|
||||||
FUNCTION_LITERAL
|
PsiElement(AT)('@')
|
||||||
PsiElement(LBRACE)('{')
|
PsiElement(IDENTIFIER)('f')
|
||||||
PsiWhiteSpace('\n ')
|
|
||||||
BLOCK
|
|
||||||
RETURN
|
|
||||||
PsiElement(return)('return')
|
|
||||||
PsiWhiteSpace(' ')
|
PsiWhiteSpace(' ')
|
||||||
INTEGER_CONSTANT
|
FUNCTION_LITERAL_EXPRESSION
|
||||||
PsiElement(INTEGER_LITERAL)('2')
|
FUNCTION_LITERAL
|
||||||
PsiWhiteSpace('\n ')
|
PsiElement(LBRACE)('{')
|
||||||
PsiElement(RBRACE)('}')
|
PsiWhiteSpace('\n ')
|
||||||
|
BLOCK
|
||||||
|
RETURN
|
||||||
|
PsiElement(return)('return')
|
||||||
|
PsiWhiteSpace(' ')
|
||||||
|
INTEGER_CONSTANT
|
||||||
|
PsiElement(INTEGER_LITERAL)('2')
|
||||||
|
PsiWhiteSpace('\n ')
|
||||||
|
PsiElement(RBRACE)('}')
|
||||||
PsiWhiteSpace('\n\n ')
|
PsiWhiteSpace('\n\n ')
|
||||||
RETURN
|
RETURN
|
||||||
PsiElement(return)('return')
|
PsiElement(return)('return')
|
||||||
@@ -75,16 +77,14 @@ JetFile: oldSyntaxExpressions.kt
|
|||||||
PARENTHESIZED
|
PARENTHESIZED
|
||||||
PsiElement(LPAR)('(')
|
PsiElement(LPAR)('(')
|
||||||
LABELED_EXPRESSION
|
LABELED_EXPRESSION
|
||||||
PsiErrorElement:Label must be named
|
LABEL_QUALIFIER
|
||||||
PsiElement(AT)('@')
|
LABEL
|
||||||
REFERENCE_EXPRESSION
|
PsiElement(AT)('@')
|
||||||
PsiElement(IDENTIFIER)('f')
|
PsiElement(IDENTIFIER)('f')
|
||||||
PsiErrorElement:Expecting ')'
|
PsiWhiteSpace(' ')
|
||||||
<empty list>
|
INTEGER_CONSTANT
|
||||||
PsiWhiteSpace(' ')
|
PsiElement(INTEGER_LITERAL)('3')
|
||||||
PsiErrorElement:Unexpected tokens (use ';' to separate expressions on the same line)
|
PsiElement(RPAR)(')')
|
||||||
PsiElement(INTEGER_LITERAL)('3')
|
|
||||||
PsiElement(RPAR)(')')
|
|
||||||
PsiWhiteSpace('\n\n ')
|
PsiWhiteSpace('\n\n ')
|
||||||
PROPERTY
|
PROPERTY
|
||||||
PsiElement(val)('val')
|
PsiElement(val)('val')
|
||||||
|
|||||||
@@ -123,13 +123,13 @@ JetFile: recovery.kt
|
|||||||
PsiElement(return)('return')
|
PsiElement(return)('return')
|
||||||
PsiWhiteSpace('\n ')
|
PsiWhiteSpace('\n ')
|
||||||
LABELED_EXPRESSION
|
LABELED_EXPRESSION
|
||||||
PsiErrorElement:Label must be named
|
LABEL_QUALIFIER
|
||||||
PsiElement(AT)('@')
|
LABEL
|
||||||
REFERENCE_EXPRESSION
|
PsiElement(AT)('@')
|
||||||
PsiElement(IDENTIFIER)('loop2')
|
PsiElement(IDENTIFIER)('loop2')
|
||||||
PsiWhiteSpace(' ')
|
PsiWhiteSpace(' ')
|
||||||
PsiErrorElement:Unexpected tokens (use ';' to separate expressions on the same line)
|
INTEGER_CONSTANT
|
||||||
PsiElement(INTEGER_LITERAL)('4')
|
PsiElement(INTEGER_LITERAL)('4')
|
||||||
PsiWhiteSpace('\n ')
|
PsiWhiteSpace('\n ')
|
||||||
PsiElement(RBRACE)('}')
|
PsiElement(RBRACE)('}')
|
||||||
PsiWhiteSpace('\n\n ')
|
PsiWhiteSpace('\n\n ')
|
||||||
|
|||||||
@@ -33,13 +33,13 @@ JetFile: spaceBeforeLabelReference.kt
|
|||||||
PsiElement(return)('return')
|
PsiElement(return)('return')
|
||||||
PsiWhiteSpace(' ')
|
PsiWhiteSpace(' ')
|
||||||
LABELED_EXPRESSION
|
LABELED_EXPRESSION
|
||||||
PsiErrorElement:Label must be named
|
LABEL_QUALIFIER
|
||||||
PsiElement(AT)('@')
|
LABEL
|
||||||
REFERENCE_EXPRESSION
|
PsiElement(AT)('@')
|
||||||
PsiElement(IDENTIFIER)('l2')
|
PsiElement(IDENTIFIER)('l2')
|
||||||
PsiWhiteSpace(' ')
|
PsiWhiteSpace(' ')
|
||||||
PsiErrorElement:Unexpected tokens (use ';' to separate expressions on the same line)
|
INTEGER_CONSTANT
|
||||||
PsiElement(INTEGER_LITERAL)('1')
|
PsiElement(INTEGER_LITERAL)('1')
|
||||||
PsiWhiteSpace('\n\n ')
|
PsiWhiteSpace('\n\n ')
|
||||||
PROPERTY
|
PROPERTY
|
||||||
PsiElement(val)('val')
|
PsiElement(val)('val')
|
||||||
@@ -55,20 +55,20 @@ JetFile: spaceBeforeLabelReference.kt
|
|||||||
PsiElement(return)('return')
|
PsiElement(return)('return')
|
||||||
PsiWhiteSpace(' ')
|
PsiWhiteSpace(' ')
|
||||||
LABELED_EXPRESSION
|
LABELED_EXPRESSION
|
||||||
PsiErrorElement:Label must be named
|
LABEL_QUALIFIER
|
||||||
PsiElement(AT)('@')
|
LABEL
|
||||||
REFERENCE_EXPRESSION
|
PsiElement(AT)('@')
|
||||||
PsiElement(IDENTIFIER)('l3')
|
PsiElement(IDENTIFIER)('l3')
|
||||||
PsiWhiteSpace('\n\n ')
|
PsiWhiteSpace('\n\n ')
|
||||||
PROPERTY
|
PROPERTY
|
||||||
PsiElement(val)('val')
|
PsiElement(val)('val')
|
||||||
PsiWhiteSpace(' ')
|
PsiWhiteSpace(' ')
|
||||||
PsiElement(IDENTIFIER)('x')
|
PsiElement(IDENTIFIER)('x')
|
||||||
PsiWhiteSpace(' ')
|
PsiWhiteSpace(' ')
|
||||||
PsiElement(EQ)('=')
|
PsiElement(EQ)('=')
|
||||||
PsiWhiteSpace(' ')
|
PsiWhiteSpace(' ')
|
||||||
INTEGER_CONSTANT
|
INTEGER_CONSTANT
|
||||||
PsiElement(INTEGER_LITERAL)('3')
|
PsiElement(INTEGER_LITERAL)('3')
|
||||||
PsiWhiteSpace('\n\n ')
|
PsiWhiteSpace('\n\n ')
|
||||||
CONTINUE
|
CONTINUE
|
||||||
PsiElement(continue)('continue')
|
PsiElement(continue)('continue')
|
||||||
@@ -111,33 +111,33 @@ JetFile: spaceBeforeLabelReference.kt
|
|||||||
PsiWhiteSpace(' ')
|
PsiWhiteSpace(' ')
|
||||||
PsiComment(BLOCK_COMMENT)('/**/')
|
PsiComment(BLOCK_COMMENT)('/**/')
|
||||||
LABELED_EXPRESSION
|
LABELED_EXPRESSION
|
||||||
PsiErrorElement:Label must be named
|
LABEL_QUALIFIER
|
||||||
PsiElement(AT)('@')
|
LABEL
|
||||||
REFERENCE_EXPRESSION
|
PsiElement(AT)('@')
|
||||||
PsiElement(IDENTIFIER)('l6')
|
PsiElement(IDENTIFIER)('l6')
|
||||||
PsiWhiteSpace('\n\n ')
|
PsiWhiteSpace('\n\n ')
|
||||||
PROPERTY
|
PROPERTY
|
||||||
PsiElement(val)('val')
|
PsiElement(val)('val')
|
||||||
PsiWhiteSpace(' ')
|
PsiWhiteSpace(' ')
|
||||||
PsiElement(IDENTIFIER)('x')
|
PsiElement(IDENTIFIER)('x')
|
||||||
PsiWhiteSpace(' ')
|
PsiWhiteSpace(' ')
|
||||||
PsiElement(EQ)('=')
|
PsiElement(EQ)('=')
|
||||||
PsiWhiteSpace(' ')
|
PsiWhiteSpace(' ')
|
||||||
INTEGER_CONSTANT
|
INTEGER_CONSTANT
|
||||||
PsiElement(INTEGER_LITERAL)('8')
|
PsiElement(INTEGER_LITERAL)('8')
|
||||||
PsiWhiteSpace('\n\n ')
|
PsiWhiteSpace('\n\n ')
|
||||||
RETURN
|
RETURN
|
||||||
PsiElement(return)('return')
|
PsiElement(return)('return')
|
||||||
PsiComment(EOL_COMMENT)('//')
|
PsiComment(EOL_COMMENT)('//')
|
||||||
PsiWhiteSpace('\n')
|
PsiWhiteSpace('\n')
|
||||||
LABELED_EXPRESSION
|
LABELED_EXPRESSION
|
||||||
PsiErrorElement:Label must be named
|
LABEL_QUALIFIER
|
||||||
PsiElement(AT)('@')
|
LABEL
|
||||||
REFERENCE_EXPRESSION
|
PsiElement(AT)('@')
|
||||||
PsiElement(IDENTIFIER)('l7')
|
PsiElement(IDENTIFIER)('l7')
|
||||||
PsiWhiteSpace(' ')
|
PsiWhiteSpace(' ')
|
||||||
PsiErrorElement:Unexpected tokens (use ';' to separate expressions on the same line)
|
INTEGER_CONSTANT
|
||||||
PsiElement(INTEGER_LITERAL)('4')
|
PsiElement(INTEGER_LITERAL)('4')
|
||||||
PsiWhiteSpace('\n\n ')
|
PsiWhiteSpace('\n\n ')
|
||||||
PROPERTY
|
PROPERTY
|
||||||
PsiElement(val)('val')
|
PsiElement(val)('val')
|
||||||
|
|||||||
Reference in New Issue
Block a user