mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
New Java parser (incomplete class declaration parsing fixed)
This commit is contained in:
@@ -246,7 +246,8 @@ public class DeclarationParser {
|
||||
|
||||
if (expect(builder, JavaTokenType.AT)) {
|
||||
if (builder.getTokenType() == JavaTokenType.INTERFACE_KEYWORD) {
|
||||
return parseClassFromKeyword(builder, declaration, true, context);
|
||||
final PsiBuilder.Marker result = parseClassFromKeyword(builder, declaration, true, context);
|
||||
return result != null ? result : modList;
|
||||
}
|
||||
else {
|
||||
declaration.rollbackTo();
|
||||
|
||||
@@ -0,0 +1,3 @@
|
||||
public class Main {
|
||||
@interface <caret>
|
||||
}
|
||||
@@ -0,0 +1,38 @@
|
||||
PsiJavaFile:Errors2.java
|
||||
PsiImportList
|
||||
<empty list>
|
||||
PsiClass:Main
|
||||
PsiModifierList:public
|
||||
PsiKeyword:public('public')
|
||||
PsiWhiteSpace(' ')
|
||||
PsiKeyword:class('class')
|
||||
PsiWhiteSpace(' ')
|
||||
PsiIdentifier:Main('Main')
|
||||
PsiTypeParameterList
|
||||
<empty list>
|
||||
PsiReferenceList
|
||||
<empty list>
|
||||
PsiReferenceList
|
||||
<empty list>
|
||||
PsiWhiteSpace(' ')
|
||||
PsiJavaToken:LBRACE('{')
|
||||
PsiWhiteSpace('\n')
|
||||
PsiModifierList:
|
||||
<empty list>
|
||||
PsiJavaToken:AT('@')
|
||||
PsiKeyword:interface('interface')
|
||||
PsiErrorElement:Identifier expected
|
||||
<empty list>
|
||||
PsiWhiteSpace(' ')
|
||||
PsiModifierList:
|
||||
<empty list>
|
||||
PsiErrorElement:Identifier or type expected
|
||||
PsiTypeParameterList
|
||||
PsiJavaToken:LT('<')
|
||||
PsiTypeParameter:caret
|
||||
PsiIdentifier:caret('caret')
|
||||
PsiElement(EXTENDS_BOUND_LIST)
|
||||
<empty list>
|
||||
PsiJavaToken:GT('>')
|
||||
PsiWhiteSpace('\n')
|
||||
PsiJavaToken:RBRACE('}')
|
||||
+1
@@ -39,4 +39,5 @@ public class ClassParsingTest extends JavaParsingTestCase {
|
||||
|
||||
public void testErrors0() { doTest(true); }
|
||||
public void testErrors1() { doTest(true); }
|
||||
public void testErrors2() { doTest(true); }
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user