New Java parser (work in progress)

This commit is contained in:
Roman Shevchenko
2010-07-30 20:26:27 +04:00
parent 7280d024d7
commit cf6f089bd0
24 changed files with 488 additions and 12 deletions
@@ -0,0 +1,10 @@
PsiJavaFile:SyncIncomplete0.java
PsiCodeBlock
PsiJavaToken:LBRACE('{')
PsiWhiteSpace(' ')
PsiSynchronizedStatement
PsiKeyword:synchronized('synchronized')
PsiErrorElement:'(' expected
<empty list>
PsiWhiteSpace(' ')
PsiJavaToken:RBRACE('}')
@@ -0,0 +1,11 @@
PsiJavaFile:SyncIncomplete1.java
PsiCodeBlock
PsiJavaToken:LBRACE('{')
PsiWhiteSpace(' ')
PsiSynchronizedStatement
PsiKeyword:synchronized('synchronized')
PsiJavaToken:LPARENTH('(')
PsiErrorElement:Expression expected
<empty list>
PsiWhiteSpace(' ')
PsiJavaToken:RBRACE('}')
@@ -0,0 +1,15 @@
PsiJavaFile:SyncIncomplete2.java
PsiCodeBlock
PsiJavaToken:LBRACE('{')
PsiWhiteSpace(' ')
PsiSynchronizedStatement
PsiKeyword:synchronized('synchronized')
PsiJavaToken:LPARENTH('(')
PsiReferenceExpression:o
PsiReferenceParameterList
<empty list>
PsiIdentifier:o('o')
PsiErrorElement:')' expected
<empty list>
PsiWhiteSpace(' ')
PsiJavaToken:RBRACE('}')
@@ -0,0 +1,16 @@
PsiJavaFile:SyncIncomplete3.java
PsiCodeBlock
PsiJavaToken:LBRACE('{')
PsiWhiteSpace(' ')
PsiSynchronizedStatement
PsiKeyword:synchronized('synchronized')
PsiJavaToken:LPARENTH('(')
PsiReferenceExpression:o
PsiReferenceParameterList
<empty list>
PsiIdentifier:o('o')
PsiJavaToken:RPARENTH(')')
PsiErrorElement:'{' expected
<empty list>
PsiWhiteSpace(' ')
PsiJavaToken:RBRACE('}')
@@ -0,0 +1,15 @@
PsiJavaFile:SyncIncomplete4.java
PsiCodeBlock
PsiJavaToken:LBRACE('{')
PsiWhiteSpace(' ')
PsiSynchronizedStatement
PsiKeyword:synchronized('synchronized')
PsiJavaToken:LPARENTH('(')
PsiErrorElement:Expression expected
<empty list>
PsiJavaToken:RPARENTH(')')
PsiCodeBlock
PsiJavaToken:LBRACE('{')
PsiJavaToken:RBRACE('}')
PsiWhiteSpace(' ')
PsiJavaToken:RBRACE('}')
@@ -0,0 +1,22 @@
PsiJavaFile:SyncIncomplete5.java
PsiCodeBlock
PsiJavaToken:LBRACE('{')
PsiWhiteSpace(' ')
PsiSynchronizedStatement
PsiKeyword:synchronized('synchronized')
PsiJavaToken:LPARENTH('(')
PsiErrorElement:Expression expected
<empty list>
PsiWhiteSpace('\n ')
PsiExpressionStatement
PsiMethodCallExpression:foo()
PsiReferenceExpression:foo
PsiReferenceParameterList
<empty list>
PsiIdentifier:foo('foo')
PsiExpressionList
PsiJavaToken:LPARENTH('(')
PsiJavaToken:RPARENTH(')')
PsiJavaToken:SEMICOLON(';')
PsiWhiteSpace(' ')
PsiJavaToken:RBRACE('}')
@@ -0,0 +1,17 @@
PsiJavaFile:SyncNormal.java
PsiCodeBlock
PsiJavaToken:LBRACE('{')
PsiWhiteSpace(' ')
PsiSynchronizedStatement
PsiKeyword:synchronized('synchronized')
PsiJavaToken:LPARENTH('(')
PsiReferenceExpression:o
PsiReferenceParameterList
<empty list>
PsiIdentifier:o('o')
PsiJavaToken:RPARENTH(')')
PsiCodeBlock
PsiJavaToken:LBRACE('{')
PsiJavaToken:RBRACE('}')
PsiWhiteSpace(' ')
PsiJavaToken:RBRACE('}')
@@ -0,0 +1,10 @@
PsiJavaFile:ThrowIncomplete0.java
PsiCodeBlock
PsiJavaToken:LBRACE('{')
PsiWhiteSpace(' ')
PsiThrowStatement
PsiKeyword:throw('throw')
PsiErrorElement:Expression expected
<empty list>
PsiWhiteSpace(' ')
PsiJavaToken:RBRACE('}')
@@ -0,0 +1,15 @@
PsiJavaFile:ThrowIncomplete1.java
PsiCodeBlock
PsiJavaToken:LBRACE('{')
PsiWhiteSpace(' ')
PsiThrowStatement
PsiKeyword:throw('throw')
PsiWhiteSpace(' ')
PsiReferenceExpression:e
PsiReferenceParameterList
<empty list>
PsiIdentifier:e('e')
PsiErrorElement:';' expected
<empty list>
PsiWhiteSpace(' ')
PsiJavaToken:RBRACE('}')
@@ -0,0 +1,14 @@
PsiJavaFile:ThrowNormal.java
PsiCodeBlock
PsiJavaToken:LBRACE('{')
PsiWhiteSpace(' ')
PsiThrowStatement
PsiKeyword:throw('throw')
PsiWhiteSpace(' ')
PsiReferenceExpression:e
PsiReferenceParameterList
<empty list>
PsiIdentifier:e('e')
PsiJavaToken:SEMICOLON(';')
PsiWhiteSpace(' ')
PsiJavaToken:RBRACE('}')
@@ -0,0 +1,10 @@
PsiJavaFile:TryIncomplete0.java
PsiCodeBlock
PsiJavaToken:LBRACE('{')
PsiWhiteSpace(' ')
PsiTryStatement
PsiKeyword:try('try')
PsiErrorElement:'{' expected
<empty list>
PsiWhiteSpace(' ')
PsiJavaToken:RBRACE('}')
@@ -0,0 +1,13 @@
PsiJavaFile:TryIncomplete1.java
PsiCodeBlock
PsiJavaToken:LBRACE('{')
PsiWhiteSpace(' ')
PsiTryStatement
PsiKeyword:try('try')
PsiCodeBlock
PsiJavaToken:LBRACE('{')
PsiJavaToken:RBRACE('}')
PsiErrorElement:'catch' or 'finally' expected
<empty list>
PsiWhiteSpace(' ')
PsiJavaToken:RBRACE('}')
@@ -0,0 +1,15 @@
PsiJavaFile:TryIncomplete2.java
PsiCodeBlock
PsiJavaToken:LBRACE('{')
PsiWhiteSpace(' ')
PsiTryStatement
PsiKeyword:try('try')
PsiCodeBlock
PsiJavaToken:LBRACE('{')
PsiJavaToken:RBRACE('}')
PsiCatchSection
PsiKeyword:catch('catch')
PsiErrorElement:'(' expected
<empty list>
PsiWhiteSpace(' ')
PsiJavaToken:RBRACE('}')
@@ -0,0 +1,18 @@
PsiJavaFile:TryIncomplete3.java
PsiCodeBlock
PsiJavaToken:LBRACE('{')
PsiWhiteSpace(' ')
PsiTryStatement
PsiKeyword:try('try')
PsiCodeBlock
PsiJavaToken:LBRACE('{')
PsiJavaToken:RBRACE('}')
PsiCatchSection
PsiKeyword:catch('catch')
PsiJavaToken:LPARENTH('(')
PsiErrorElement:Parameter expected
<empty list>
PsiErrorElement:')' expected
<empty list>
PsiWhiteSpace(' ')
PsiJavaToken:RBRACE('}')
@@ -0,0 +1,25 @@
PsiJavaFile:TryIncomplete4.java
PsiCodeBlock
PsiJavaToken:LBRACE('{')
PsiWhiteSpace(' ')
PsiTryStatement
PsiKeyword:try('try')
PsiCodeBlock
PsiJavaToken:LBRACE('{')
PsiJavaToken:RBRACE('}')
PsiCatchSection
PsiKeyword:catch('catch')
PsiJavaToken:LPARENTH('(')
PsiModifierList:
<empty list>
PsiTypeElement:E
PsiJavaCodeReferenceElement:E
PsiIdentifier:E('E')
PsiReferenceParameterList
<empty list>
PsiErrorElement:Identifier expected
<empty list>
PsiErrorElement:')' expected
<empty list>
PsiWhiteSpace(' ')
PsiJavaToken:RBRACE('}')
@@ -0,0 +1,26 @@
PsiJavaFile:TryIncomplete5.java
PsiCodeBlock
PsiJavaToken:LBRACE('{')
PsiWhiteSpace(' ')
PsiTryStatement
PsiKeyword:try('try')
PsiCodeBlock
PsiJavaToken:LBRACE('{')
PsiJavaToken:RBRACE('}')
PsiCatchSection
PsiKeyword:catch('catch')
PsiJavaToken:LPARENTH('(')
PsiParameter:e
PsiModifierList:
<empty list>
PsiTypeElement:E
PsiJavaCodeReferenceElement:E
PsiIdentifier:E('E')
PsiReferenceParameterList
<empty list>
PsiWhiteSpace(' ')
PsiIdentifier:e('e')
PsiErrorElement:')' expected
<empty list>
PsiWhiteSpace(' ')
PsiJavaToken:RBRACE('}')
@@ -0,0 +1,27 @@
PsiJavaFile:TryIncomplete6.java
PsiCodeBlock
PsiJavaToken:LBRACE('{')
PsiWhiteSpace(' ')
PsiTryStatement
PsiKeyword:try('try')
PsiCodeBlock
PsiJavaToken:LBRACE('{')
PsiJavaToken:RBRACE('}')
PsiCatchSection
PsiKeyword:catch('catch')
PsiJavaToken:LPARENTH('(')
PsiParameter:e
PsiModifierList:
<empty list>
PsiTypeElement:E
PsiJavaCodeReferenceElement:E
PsiIdentifier:E('E')
PsiReferenceParameterList
<empty list>
PsiWhiteSpace(' ')
PsiIdentifier:e('e')
PsiJavaToken:RPARENTH(')')
PsiErrorElement:'{' expected
<empty list>
PsiWhiteSpace(' ')
PsiJavaToken:RBRACE('}')
@@ -0,0 +1,14 @@
PsiJavaFile:TryIncomplete7.java
PsiCodeBlock
PsiJavaToken:LBRACE('{')
PsiWhiteSpace(' ')
PsiTryStatement
PsiKeyword:try('try')
PsiCodeBlock
PsiJavaToken:LBRACE('{')
PsiJavaToken:RBRACE('}')
PsiKeyword:finally('finally')
PsiErrorElement:'{' expected
<empty list>
PsiWhiteSpace(' ')
PsiJavaToken:RBRACE('}')
@@ -0,0 +1,28 @@
PsiJavaFile:TryNormal0.java
PsiCodeBlock
PsiJavaToken:LBRACE('{')
PsiWhiteSpace(' ')
PsiTryStatement
PsiKeyword:try('try')
PsiCodeBlock
PsiJavaToken:LBRACE('{')
PsiJavaToken:RBRACE('}')
PsiCatchSection
PsiKeyword:catch('catch')
PsiJavaToken:LPARENTH('(')
PsiParameter:e
PsiModifierList:
<empty list>
PsiTypeElement:E
PsiJavaCodeReferenceElement:E
PsiIdentifier:E('E')
PsiReferenceParameterList
<empty list>
PsiWhiteSpace(' ')
PsiIdentifier:e('e')
PsiJavaToken:RPARENTH(')')
PsiCodeBlock
PsiJavaToken:LBRACE('{')
PsiJavaToken:RBRACE('}')
PsiWhiteSpace(' ')
PsiJavaToken:RBRACE('}')
@@ -0,0 +1,32 @@
PsiJavaFile:TryNormal1.java
PsiCodeBlock
PsiJavaToken:LBRACE('{')
PsiWhiteSpace(' ')
PsiTryStatement
PsiKeyword:try('try')
PsiCodeBlock
PsiJavaToken:LBRACE('{')
PsiJavaToken:RBRACE('}')
PsiCatchSection
PsiKeyword:catch('catch')
PsiJavaToken:LPARENTH('(')
PsiParameter:e
PsiModifierList:
<empty list>
PsiTypeElement:E
PsiJavaCodeReferenceElement:E
PsiIdentifier:E('E')
PsiReferenceParameterList
<empty list>
PsiWhiteSpace(' ')
PsiIdentifier:e('e')
PsiJavaToken:RPARENTH(')')
PsiCodeBlock
PsiJavaToken:LBRACE('{')
PsiJavaToken:RBRACE('}')
PsiKeyword:finally('finally')
PsiCodeBlock
PsiJavaToken:LBRACE('{')
PsiJavaToken:RBRACE('}')
PsiWhiteSpace(' ')
PsiJavaToken:RBRACE('}')
@@ -0,0 +1,15 @@
PsiJavaFile:TryNormal2.java
PsiCodeBlock
PsiJavaToken:LBRACE('{')
PsiWhiteSpace(' ')
PsiTryStatement
PsiKeyword:try('try')
PsiCodeBlock
PsiJavaToken:LBRACE('{')
PsiJavaToken:RBRACE('}')
PsiKeyword:finally('finally')
PsiCodeBlock
PsiJavaToken:LBRACE('{')
PsiJavaToken:RBRACE('}')
PsiWhiteSpace(' ')
PsiJavaToken:RBRACE('}')
@@ -66,9 +66,30 @@ public class StatementParserTest extends JavaParsingTestCase {
//ReturnParsingTest
//SwitchParsingTest
//SynchronizedParsingTest
//ThrowParsingTest
//TryParsingTest
public void testSyncNormal() { doParserTest("{ synchronized(o){} }"); }
public void testSyncIncomplete0() { doParserTest("{ synchronized }"); }
public void testSyncIncomplete1() { doParserTest("{ synchronized( }"); }
public void testSyncIncomplete2() { doParserTest("{ synchronized(o }"); }
public void testSyncIncomplete3() { doParserTest("{ synchronized(o) }"); }
public void testSyncIncomplete4() { doParserTest("{ synchronized(){} }"); }
public void testSyncIncomplete5() { doParserTest("{ synchronized(\n foo(); }"); }
public void testThrowNormal() { doParserTest("{ throw e; }"); }
public void testThrowIncomplete0() { doParserTest("{ throw }"); }
public void testThrowIncomplete1() { doParserTest("{ throw e }"); }
public void testTryNormal0() { doParserTest("{ try{}catch(E e){} }"); }
public void testTryNormal1() { doParserTest("{ try{}catch(E e){}finally{} }"); }
public void testTryNormal2() { doParserTest("{ try{}finally{} }"); }
public void testTryIncomplete0() { doParserTest("{ try }"); }
public void testTryIncomplete1() { doParserTest("{ try{} }"); }
public void testTryIncomplete2() { doParserTest("{ try{}catch }"); }
public void testTryIncomplete3() { doParserTest("{ try{}catch( }"); }
public void testTryIncomplete4() { doParserTest("{ try{}catch(E }"); }
public void testTryIncomplete5() { doParserTest("{ try{}catch(E e }"); }
public void testTryIncomplete6() { doParserTest("{ try{}catch(E e) }"); }
public void testTryIncomplete7() { doParserTest("{ try{}finally }"); }
public void testWhileNormal() { doParserTest("{ while (true) foo(); }"); }
public void testWhileIncomplete0() { doParserTest("{ while }"); }