Minor: prevent rare case when soft keyword was parsed as enum entry
This commit is contained in:
@@ -46,7 +46,7 @@ public class JetParsing extends AbstractJetParsing {
|
||||
private static final TokenSet TOPLEVEL_OBJECT_FIRST = TokenSet.create(TYPE_ALIAS_KEYWORD, TRAIT_KEYWORD, CLASS_KEYWORD,
|
||||
FUN_KEYWORD, VAL_KEYWORD, PACKAGE_KEYWORD);
|
||||
private static final TokenSet ENUM_MEMBER_FIRST = TokenSet.create(TYPE_ALIAS_KEYWORD, TRAIT_KEYWORD, CLASS_KEYWORD,
|
||||
FUN_KEYWORD, VAL_KEYWORD, IDENTIFIER);
|
||||
FUN_KEYWORD, VAL_KEYWORD, IDENTIFIER, OBJECT_KEYWORD);
|
||||
|
||||
private static final TokenSet CLASS_NAME_RECOVERY_SET = TokenSet.orSet(TokenSet.create(LT, LPAR, COLON, LBRACE), TOPLEVEL_OBJECT_FIRST);
|
||||
private static final TokenSet TYPE_PARAMETER_GT_RECOVERY_SET = TokenSet.create(WHERE_KEYWORD, LPAR, COLON, LBRACE, GT);
|
||||
|
||||
@@ -0,0 +1,7 @@
|
||||
// test that inner keyword is not parsed as enum entry
|
||||
public enum class A {
|
||||
A
|
||||
B
|
||||
|
||||
inner object
|
||||
}
|
||||
@@ -0,0 +1,37 @@
|
||||
JetFile: namelessObjectAsEnumMember.kt
|
||||
PACKAGE_DIRECTIVE
|
||||
<empty list>
|
||||
CLASS
|
||||
PsiComment(EOL_COMMENT)('// test that inner keyword is not parsed as enum entry')
|
||||
PsiWhiteSpace('\n')
|
||||
MODIFIER_LIST
|
||||
PsiElement(public)('public')
|
||||
PsiWhiteSpace(' ')
|
||||
PsiElement(enum)('enum')
|
||||
PsiWhiteSpace(' ')
|
||||
PsiElement(class)('class')
|
||||
PsiWhiteSpace(' ')
|
||||
PsiElement(IDENTIFIER)('A')
|
||||
PsiWhiteSpace(' ')
|
||||
CLASS_BODY
|
||||
PsiElement(LBRACE)('{')
|
||||
PsiWhiteSpace('\n ')
|
||||
ENUM_ENTRY
|
||||
OBJECT_DECLARATION_NAME
|
||||
PsiElement(IDENTIFIER)('A')
|
||||
PsiWhiteSpace('\n ')
|
||||
ENUM_ENTRY
|
||||
OBJECT_DECLARATION_NAME
|
||||
PsiElement(IDENTIFIER)('B')
|
||||
PsiWhiteSpace('\n\n ')
|
||||
OBJECT_DECLARATION
|
||||
MODIFIER_LIST
|
||||
PsiElement(inner)('inner')
|
||||
PsiWhiteSpace(' ')
|
||||
PsiElement(object)('object')
|
||||
PsiWhiteSpace('\n')
|
||||
OBJECT_DECLARATION_NAME
|
||||
PsiErrorElement:Name expected
|
||||
PsiElement(RBRACE)('}')
|
||||
PsiErrorElement:Expecting '}' to close enum class body
|
||||
<empty list>
|
||||
@@ -391,6 +391,12 @@ public class JetParsingTestGenerated extends AbstractJetParsingTest {
|
||||
doParsingTest(fileName);
|
||||
}
|
||||
|
||||
@TestMetadata("namelessObjectAsEnumMember.kt")
|
||||
public void testNamelessObjectAsEnumMember() throws Exception {
|
||||
String fileName = JetTestUtils.navigationMetadata("compiler/testData/psi/namelessObjectAsEnumMember.kt");
|
||||
doParsingTest(fileName);
|
||||
}
|
||||
|
||||
@TestMetadata("NestedComments.kt")
|
||||
public void testNestedComments() throws Exception {
|
||||
String fileName = JetTestUtils.navigationMetadata("compiler/testData/psi/NestedComments.kt");
|
||||
|
||||
Reference in New Issue
Block a user