IDEA-76917 OOME after some carefully (mis)placed edits =)

This commit is contained in:
Maxim.Mossienko
2011-11-15 18:34:20 +04:00
parent fe46aabddd
commit ee78a02f61
4 changed files with 125 additions and 1 deletions
@@ -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('}')
@@ -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;
}
}
}