Parse label reference with spaces before '@'

But still report error
This commit is contained in:
Denis Zharkov
2015-05-04 12:42:59 +03:00
parent 3528762e2d
commit b13e932c3c
4 changed files with 56 additions and 38 deletions
@@ -1647,10 +1647,13 @@ public class JetExpressionParsing extends AbstractJetParsing {
} }
/* /*
* label? * labelReference?
*/ */
private void parseLabelReferenceWithNoWhitespace() { private void parseLabelReferenceWithNoWhitespace() {
if (at(AT) && !WHITE_SPACE_OR_COMMENT_BIT_SET.contains(myBuilder.rawLookup(-1))) { if (at(AT) && !myBuilder.newlineBeforeCurrentToken()) {
if (WHITE_SPACE_OR_COMMENT_BIT_SET.contains(myBuilder.rawLookup(-1))) {
error("There should be no space or comments before '@' in label reference");
}
parseLabelReference(); parseLabelReference();
} }
} }
+4 -2
View File
@@ -108,8 +108,9 @@ JetFile: recovery.kt
PsiWhiteSpace('\n ') PsiWhiteSpace('\n ')
RETURN RETURN
PsiElement(return)('return') PsiElement(return)('return')
PsiErrorElement:There should be no space or comments before '@' in label reference
<empty list>
PsiWhiteSpace(' ') PsiWhiteSpace(' ')
LABELED_EXPRESSION
PsiErrorElement:Label must be named PsiErrorElement:Label must be named
PsiElement(AT)('@') PsiElement(AT)('@')
PsiWhiteSpace(' ') PsiWhiteSpace(' ')
@@ -257,8 +258,9 @@ JetFile: recovery.kt
PsiWhiteSpace('\n\n ') PsiWhiteSpace('\n\n ')
RETURN RETURN
PsiElement(return)('return') PsiElement(return)('return')
PsiErrorElement:There should be no space or comments before '@' in label reference
<empty list>
PsiWhiteSpace(' ') PsiWhiteSpace(' ')
LABELED_EXPRESSION
PsiErrorElement:Label must be named PsiErrorElement:Label must be named
PsiElement(AT)('@') PsiElement(AT)('@')
PsiWhiteSpace(' ') PsiWhiteSpace(' ')
@@ -14,8 +14,11 @@ JetFile: spaceBeforeLabelReference.kt
PsiWhiteSpace('\n ') PsiWhiteSpace('\n ')
BREAK BREAK
PsiElement(break)('break') PsiElement(break)('break')
PsiErrorElement:There should be no space or comments before '@' in label reference
<empty list>
PsiWhiteSpace(' ') PsiWhiteSpace(' ')
PsiErrorElement:Unexpected tokens (use ';' to separate expressions on the same line) LABEL_QUALIFIER
LABEL
PsiElement(AT)('@') PsiElement(AT)('@')
PsiElement(IDENTIFIER)('l1') PsiElement(IDENTIFIER)('l1')
PsiWhiteSpace('\n\n ') PsiWhiteSpace('\n\n ')
@@ -31,14 +34,15 @@ JetFile: spaceBeforeLabelReference.kt
PsiWhiteSpace('\n\n ') PsiWhiteSpace('\n\n ')
RETURN RETURN
PsiElement(return)('return') PsiElement(return)('return')
PsiErrorElement:There should be no space or comments before '@' in label reference
<empty list>
PsiWhiteSpace(' ') PsiWhiteSpace(' ')
LABELED_EXPRESSION LABEL_QUALIFIER
PsiErrorElement:Label must be named LABEL
PsiElement(AT)('@') PsiElement(AT)('@')
REFERENCE_EXPRESSION
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
@@ -53,11 +57,12 @@ JetFile: spaceBeforeLabelReference.kt
PsiWhiteSpace('\n\n ') PsiWhiteSpace('\n\n ')
RETURN RETURN
PsiElement(return)('return') PsiElement(return)('return')
PsiErrorElement:There should be no space or comments before '@' in label reference
<empty list>
PsiWhiteSpace(' ') PsiWhiteSpace(' ')
LABELED_EXPRESSION LABEL_QUALIFIER
PsiErrorElement:Label must be named LABEL
PsiElement(AT)('@') PsiElement(AT)('@')
REFERENCE_EXPRESSION
PsiElement(IDENTIFIER)('l3') PsiElement(IDENTIFIER)('l3')
PsiWhiteSpace('\n\n ') PsiWhiteSpace('\n\n ')
PROPERTY PROPERTY
@@ -72,11 +77,15 @@ JetFile: spaceBeforeLabelReference.kt
PsiWhiteSpace('\n\n ') PsiWhiteSpace('\n\n ')
CONTINUE CONTINUE
PsiElement(continue)('continue') PsiElement(continue)('continue')
PsiErrorElement:There should be no space or comments before '@' in label reference
<empty list>
PsiWhiteSpace(' ') PsiWhiteSpace(' ')
PsiErrorElement:Unexpected tokens (use ';' to separate expressions on the same line) LABEL_QUALIFIER
LABEL
PsiElement(AT)('@') PsiElement(AT)('@')
PsiElement(IDENTIFIER)('l4') PsiElement(IDENTIFIER)('l4')
PsiWhiteSpace(' ') PsiWhiteSpace(' ')
PsiErrorElement:Unexpected tokens (use ';' to separate expressions on the same line)
PsiElement(INTEGER_LITERAL)('5') PsiElement(INTEGER_LITERAL)('5')
PsiWhiteSpace('\n\n ') PsiWhiteSpace('\n\n ')
PROPERTY PROPERTY
@@ -91,8 +100,11 @@ JetFile: spaceBeforeLabelReference.kt
PsiWhiteSpace('\n\n ') PsiWhiteSpace('\n\n ')
BREAK BREAK
PsiElement(break)('break') PsiElement(break)('break')
PsiErrorElement:There should be no space or comments before '@' in label reference
<empty list>
PsiComment(BLOCK_COMMENT)('/**/') PsiComment(BLOCK_COMMENT)('/**/')
PsiErrorElement:Unexpected tokens (use ';' to separate expressions on the same line) LABEL_QUALIFIER
LABEL
PsiElement(AT)('@') PsiElement(AT)('@')
PsiElement(IDENTIFIER)('l5') PsiElement(IDENTIFIER)('l5')
PsiWhiteSpace('\n\n ') PsiWhiteSpace('\n\n ')
@@ -108,12 +120,13 @@ JetFile: spaceBeforeLabelReference.kt
PsiWhiteSpace('\n\n ') PsiWhiteSpace('\n\n ')
RETURN RETURN
PsiElement(return)('return') PsiElement(return)('return')
PsiErrorElement:There should be no space or comments before '@' in label reference
<empty list>
PsiWhiteSpace(' ') PsiWhiteSpace(' ')
PsiComment(BLOCK_COMMENT)('/**/') PsiComment(BLOCK_COMMENT)('/**/')
LABELED_EXPRESSION LABEL_QUALIFIER
PsiErrorElement:Label must be named LABEL
PsiElement(AT)('@') PsiElement(AT)('@')
REFERENCE_EXPRESSION
PsiElement(IDENTIFIER)('l6') PsiElement(IDENTIFIER)('l6')
PsiWhiteSpace('\n\n ') PsiWhiteSpace('\n\n ')
PROPERTY PROPERTY