mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
try to parse new statement after an error from '{'
This commit is contained in:
+4
-6
@@ -41,7 +41,7 @@ public class CompilationUnit implements GroovyElementTypes {
|
||||
}
|
||||
cleanAfterError(builder);
|
||||
|
||||
while (Separators.parse(builder)) {
|
||||
while (Separators.parse(builder) || builder.getTokenType() == mLCURLY) {
|
||||
parser.parseStatementWithImports(builder);
|
||||
cleanAfterError(builder);
|
||||
}
|
||||
@@ -55,16 +55,14 @@ public class CompilationUnit implements GroovyElementTypes {
|
||||
private static void cleanAfterError(PsiBuilder builder) {
|
||||
int i = 0;
|
||||
PsiBuilder.Marker em = builder.mark();
|
||||
while (!builder.eof() &&
|
||||
!(mNLS.equals(builder.getTokenType()) ||
|
||||
mSEMI.equals(builder.getTokenType()))
|
||||
) {
|
||||
while (!builder.eof() && mNLS != builder.getTokenType() && mSEMI != builder.getTokenType() && mLCURLY != builder.getTokenType()) {
|
||||
builder.advanceLexer();
|
||||
i++;
|
||||
}
|
||||
if (i > 0) {
|
||||
em.error(GroovyBundle.message("separator.expected"));
|
||||
} else {
|
||||
}
|
||||
else {
|
||||
em.drop();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2,7 +2,8 @@ def () {
|
||||
a(<caret>
|
||||
}
|
||||
-----
|
||||
def () {
|
||||
a(
|
||||
<caret>
|
||||
def ()
|
||||
{
|
||||
a()
|
||||
<caret>
|
||||
}
|
||||
@@ -36,6 +36,9 @@ Groovy script
|
||||
PsiErrorElement:';' or new line expected
|
||||
PsiElement(identifier)('other')
|
||||
PsiElement())(')')
|
||||
PsiWhiteSpace(' ')
|
||||
PsiWhiteSpace(' ')
|
||||
Closable block
|
||||
PsiElement({)('{')
|
||||
Parameter list
|
||||
<empty list>
|
||||
PsiElement(})('}')
|
||||
@@ -37,5 +37,8 @@ Groovy script
|
||||
PsiElement(++)('++')
|
||||
PsiErrorElement:';' or new line expected
|
||||
PsiElement())(')')
|
||||
Closable block
|
||||
PsiElement({)('{')
|
||||
Parameter list
|
||||
<empty list>
|
||||
PsiElement(})('}')
|
||||
@@ -37,5 +37,8 @@ Groovy script
|
||||
PsiElement(++)('++')
|
||||
PsiErrorElement:';' or new line expected
|
||||
PsiElement())(')')
|
||||
Closable block
|
||||
PsiElement({)('{')
|
||||
Parameter list
|
||||
<empty list>
|
||||
PsiElement(})('}')
|
||||
@@ -8,9 +8,15 @@ Groovy script
|
||||
PsiWhiteSpace(' ')
|
||||
PsiErrorElement:';' or new line expected
|
||||
PsiElement(true)('true')
|
||||
PsiWhiteSpace(' ')
|
||||
PsiWhiteSpace(' ')
|
||||
Closable block
|
||||
PsiElement({)('{')
|
||||
PsiElement(identifier)('doSomething')
|
||||
PsiElement(()('(')
|
||||
PsiElement())(')')
|
||||
Parameter list
|
||||
<empty list>
|
||||
Method call
|
||||
Reference expression
|
||||
PsiElement(identifier)('doSomething')
|
||||
Arguments
|
||||
PsiElement(()('(')
|
||||
PsiElement())(')')
|
||||
PsiElement(})('}')
|
||||
@@ -27,13 +27,20 @@ Groovy script
|
||||
PsiErrorElement:')' expected
|
||||
<empty list>
|
||||
PsiWhiteSpace(' ')
|
||||
PsiErrorElement:';' or new line expected
|
||||
Closable block
|
||||
PsiElement({)('{')
|
||||
Parameter list
|
||||
<empty list>
|
||||
PsiElement(})('}')
|
||||
PsiWhiteSpace('\n')
|
||||
PsiWhiteSpace('\n')
|
||||
PsiErrorElement:';' or new line expected
|
||||
PsiElement(finally)('finally')
|
||||
Closable block
|
||||
PsiElement({)('{')
|
||||
PsiWhiteSpace(' ')
|
||||
PsiElement(identifier)('doNothing')
|
||||
Parameter list
|
||||
<empty list>
|
||||
Reference expression
|
||||
PsiElement(identifier)('doNothing')
|
||||
PsiWhiteSpace(' ')
|
||||
PsiElement(})('}')
|
||||
Reference in New Issue
Block a user