mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
IDEA-76917 OOME after some carefully (mis)placed edits =)
This commit is contained in:
@@ -246,8 +246,9 @@ public class StatementParser {
|
||||
final PsiBuilder.Marker declStatement = builder.mark();
|
||||
final PsiBuilder.Marker decl = myDeclarationParser.parse(builder, DeclarationParser.Context.CODE_BLOCK);
|
||||
if (decl == null) {
|
||||
myReferenceParser.parseType(builder, 0);
|
||||
PsiBuilder.Marker marker = myReferenceParser.parseType(builder, 0);
|
||||
error(builder, JavaErrorMessages.message("expected.identifier"));
|
||||
if (marker == null) builder.advanceLexer();
|
||||
}
|
||||
done(declStatement, JavaElementType.DECLARATION_STATEMENT);
|
||||
return declStatement;
|
||||
|
||||
@@ -0,0 +1,6 @@
|
||||
class OutOfMemoryExceptionDemo {
|
||||
void main() {
|
||||
List<Object> list = new Linked
|
||||
@Deprecated List<Object>();
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,106 @@
|
||||
PsiJavaFile:Errors4.java.txt
|
||||
PsiImportList
|
||||
<empty list>
|
||||
PsiClass:OutOfMemoryExceptionDemo
|
||||
PsiModifierList:
|
||||
<empty list>
|
||||
PsiKeyword:class('class')
|
||||
PsiWhiteSpace(' ')
|
||||
PsiIdentifier:OutOfMemoryExceptionDemo('OutOfMemoryExceptionDemo')
|
||||
PsiTypeParameterList
|
||||
<empty list>
|
||||
PsiReferenceList
|
||||
<empty list>
|
||||
PsiReferenceList
|
||||
<empty list>
|
||||
PsiWhiteSpace(' ')
|
||||
PsiJavaToken:LBRACE('{')
|
||||
PsiWhiteSpace('\n ')
|
||||
PsiMethod:main
|
||||
PsiModifierList:
|
||||
<empty list>
|
||||
PsiTypeParameterList
|
||||
<empty list>
|
||||
PsiTypeElement:void
|
||||
PsiKeyword:void('void')
|
||||
PsiWhiteSpace(' ')
|
||||
PsiIdentifier:main('main')
|
||||
PsiParameterList:()
|
||||
PsiJavaToken:LPARENTH('(')
|
||||
PsiJavaToken:RPARENTH(')')
|
||||
PsiReferenceList
|
||||
<empty list>
|
||||
PsiWhiteSpace(' ')
|
||||
PsiCodeBlock
|
||||
PsiJavaToken:LBRACE('{')
|
||||
PsiWhiteSpace('\n ')
|
||||
PsiDeclarationStatement
|
||||
PsiLocalVariable:list
|
||||
PsiModifierList:
|
||||
<empty list>
|
||||
PsiTypeElement:List<Object>
|
||||
PsiJavaCodeReferenceElement:List<Object>
|
||||
PsiIdentifier:List('List')
|
||||
PsiReferenceParameterList
|
||||
PsiJavaToken:LT('<')
|
||||
PsiTypeElement:Object
|
||||
PsiJavaCodeReferenceElement:Object
|
||||
PsiIdentifier:Object('Object')
|
||||
PsiReferenceParameterList
|
||||
<empty list>
|
||||
PsiJavaToken:GT('>')
|
||||
PsiWhiteSpace(' ')
|
||||
PsiIdentifier:list('list')
|
||||
PsiWhiteSpace(' ')
|
||||
PsiJavaToken:EQ('=')
|
||||
PsiWhiteSpace(' ')
|
||||
PsiNewExpression:new Linked
|
||||
PsiKeyword:new('new')
|
||||
PsiReferenceParameterList
|
||||
<empty list>
|
||||
PsiWhiteSpace(' ')
|
||||
PsiJavaCodeReferenceElement:Linked
|
||||
PsiIdentifier:Linked('Linked')
|
||||
PsiReferenceParameterList
|
||||
<empty list>
|
||||
PsiErrorElement:'(' or '[' expected
|
||||
<empty list>
|
||||
PsiErrorElement:';' expected
|
||||
<empty list>
|
||||
PsiWhiteSpace('\n ')
|
||||
PsiDeclarationStatement
|
||||
PsiErrorElement:Identifier expected
|
||||
<empty list>
|
||||
PsiJavaToken:AT('@')
|
||||
PsiDeclarationStatement
|
||||
PsiLocalVariable:List
|
||||
PsiModifierList:
|
||||
<empty list>
|
||||
PsiTypeElement:Deprecated
|
||||
PsiJavaCodeReferenceElement:Deprecated
|
||||
PsiIdentifier:Deprecated('Deprecated')
|
||||
PsiReferenceParameterList
|
||||
<empty list>
|
||||
PsiWhiteSpace(' ')
|
||||
PsiIdentifier:List('List')
|
||||
PsiErrorElement:';' expected
|
||||
<empty list>
|
||||
PsiErrorElement:Unexpected token
|
||||
PsiJavaToken:LT('<')
|
||||
PsiExpressionStatement
|
||||
PsiBinaryExpression:Object>()
|
||||
PsiReferenceExpression:Object
|
||||
PsiReferenceParameterList
|
||||
<empty list>
|
||||
PsiIdentifier:Object('Object')
|
||||
PsiJavaToken:GT('>')
|
||||
PsiParenthesizedExpression:()
|
||||
PsiJavaToken:LPARENTH('(')
|
||||
PsiErrorElement:Expression expected
|
||||
<empty list>
|
||||
PsiJavaToken:RPARENTH(')')
|
||||
PsiJavaToken:SEMICOLON(';')
|
||||
PsiWhiteSpace('\n ')
|
||||
PsiJavaToken:RBRACE('}')
|
||||
PsiWhiteSpace('\n')
|
||||
PsiJavaToken:RBRACE('}')
|
||||
+11
@@ -41,4 +41,15 @@ public class ClassParsingTest extends JavaParsingTestCase {
|
||||
public void testErrors1() { doTest(true); }
|
||||
public void testErrors2() { doTest(true); }
|
||||
public void testErrors3() { doTest(true); }
|
||||
|
||||
public void testErrors4() {
|
||||
String ext = myFileExt;
|
||||
try {
|
||||
myFileExt = ext + ".txt"; // TODO this test produces OOME so we use nondefault extension, the test could be simplified once the fix is in place
|
||||
doTest(true);
|
||||
}
|
||||
finally {
|
||||
myFileExt = ext;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user