New Java parser (work in progress)

This commit is contained in:
Roman Shevchenko
2010-07-30 20:26:27 +04:00
parent 3019fa87d1
commit 7280d024d7
40 changed files with 1648 additions and 8 deletions
@@ -0,0 +1,109 @@
PsiJavaFile:AnonymousInSmartCompletion.java
PsiCodeBlock
PsiJavaToken:LBRACE('{')
PsiWhiteSpace(' ')
PsiExpressionStatement
PsiNewExpression:new Foo(hash
#) {}
PsiKeyword:new('new')
PsiReferenceParameterList
<empty list>
PsiWhiteSpace(' ')
PsiAnonymousClass
PsiJavaCodeReferenceElement:Foo
PsiIdentifier:Foo('Foo')
PsiReferenceParameterList
<empty list>
PsiExpressionList
PsiJavaToken:LPARENTH('(')
PsiReferenceExpression:hash
PsiReferenceParameterList
<empty list>
PsiIdentifier:hash('hash')
PsiErrorElement:',' or ')' expected
<empty list>
PsiExpression(empty)
<empty list>
PsiWhiteSpace('\n')
PsiElement(BAD_CHARACTER)('#')
PsiJavaToken:RPARENTH(')')
PsiWhiteSpace(' ')
PsiJavaToken:LBRACE('{')
PsiJavaToken:RBRACE('}')
PsiJavaToken:SEMICOLON(';')
PsiWhiteSpace('\n ')
PsiExpressionStatement
PsiNewExpression:new Foo(hash
#, bar) {}
PsiKeyword:new('new')
PsiReferenceParameterList
<empty list>
PsiWhiteSpace(' ')
PsiAnonymousClass
PsiJavaCodeReferenceElement:Foo
PsiIdentifier:Foo('Foo')
PsiReferenceParameterList
<empty list>
PsiExpressionList
PsiJavaToken:LPARENTH('(')
PsiReferenceExpression:hash
PsiReferenceParameterList
<empty list>
PsiIdentifier:hash('hash')
PsiErrorElement:',' or ')' expected
<empty list>
PsiExpression(empty)
<empty list>
PsiWhiteSpace('\n')
PsiElement(BAD_CHARACTER)('#')
PsiJavaToken:COMMA(',')
PsiWhiteSpace(' ')
PsiReferenceExpression:bar
PsiReferenceParameterList
<empty list>
PsiIdentifier:bar('bar')
PsiJavaToken:RPARENTH(')')
PsiWhiteSpace(' ')
PsiJavaToken:LBRACE('{')
PsiJavaToken:RBRACE('}')
PsiJavaToken:SEMICOLON(';')
PsiWhiteSpace('\n ')
PsiExpressionStatement
PsiNewExpression:new Foo(hash
#x) {}
PsiKeyword:new('new')
PsiReferenceParameterList
<empty list>
PsiWhiteSpace(' ')
PsiAnonymousClass
PsiJavaCodeReferenceElement:Foo
PsiIdentifier:Foo('Foo')
PsiReferenceParameterList
<empty list>
PsiExpressionList
PsiJavaToken:LPARENTH('(')
PsiReferenceExpression:hash
PsiReferenceParameterList
<empty list>
PsiIdentifier:hash('hash')
PsiErrorElement:',' or ')' expected
<empty list>
PsiExpression(empty)
<empty list>
PsiWhiteSpace('\n')
PsiElement(BAD_CHARACTER)('#')
PsiErrorElement:',' or ')' expected
<empty list>
PsiExpression(empty)
<empty list>
PsiReferenceExpression:x
PsiReferenceParameterList
<empty list>
PsiIdentifier:x('x')
PsiJavaToken:RPARENTH(')')
PsiWhiteSpace(' ')
PsiJavaToken:LBRACE('{')
PsiJavaToken:RBRACE('}')
PsiJavaToken:SEMICOLON(';')
PsiWhiteSpace(' ')
PsiJavaToken:RBRACE('}')
@@ -0,0 +1,14 @@
PsiJavaFile:AssertNormal0.java
PsiCodeBlock
PsiJavaToken:LBRACE('{')
PsiWhiteSpace(' ')
PsiAssertStatement
PsiKeyword:assert('assert')
PsiWhiteSpace(' ')
PsiReferenceExpression:cond
PsiReferenceParameterList
<empty list>
PsiIdentifier:cond('cond')
PsiJavaToken:SEMICOLON(';')
PsiWhiteSpace(' ')
PsiJavaToken:RBRACE('}')
@@ -0,0 +1,21 @@
PsiJavaFile:AssertNormal1.java
PsiCodeBlock
PsiJavaToken:LBRACE('{')
PsiWhiteSpace(' ')
PsiAssertStatement
PsiKeyword:assert('assert')
PsiWhiteSpace(' ')
PsiReferenceExpression:cond
PsiReferenceParameterList
<empty list>
PsiIdentifier:cond('cond')
PsiWhiteSpace(' ')
PsiJavaToken:COLON(':')
PsiWhiteSpace(' ')
PsiReferenceExpression:message
PsiReferenceParameterList
<empty list>
PsiIdentifier:message('message')
PsiJavaToken:SEMICOLON(';')
PsiWhiteSpace(' ')
PsiJavaToken:RBRACE('}')
@@ -0,0 +1,36 @@
PsiJavaFile:AssignmentSimple.java
PsiCodeBlock
PsiJavaToken:LBRACE('{')
PsiWhiteSpace(' ')
PsiDeclarationStatement
PsiLocalVariable:a
PsiModifierList:
<empty list>
PsiTypeElement:int[]
PsiTypeElement:int
PsiKeyword:int('int')
PsiJavaToken:LBRACKET('[')
PsiJavaToken:RBRACKET(']')
PsiWhiteSpace(' ')
PsiIdentifier:a('a')
PsiJavaToken:SEMICOLON(';')
PsiWhiteSpace('\n ')
PsiExpressionStatement
PsiAssignmentExpression:a[0] = 0
PsiArrayAccessExpression:a[0]
PsiReferenceExpression:a
PsiReferenceParameterList
<empty list>
PsiIdentifier:a('a')
PsiJavaToken:LBRACKET('[')
PsiLiteralExpression:0
PsiJavaToken:INTEGER_LITERAL('0')
PsiJavaToken:RBRACKET(']')
PsiWhiteSpace(' ')
PsiJavaToken:EQ('=')
PsiWhiteSpace(' ')
PsiLiteralExpression:0
PsiJavaToken:INTEGER_LITERAL('0')
PsiJavaToken:SEMICOLON(';')
PsiWhiteSpace(' ')
PsiJavaToken:RBRACE('}')
@@ -0,0 +1,10 @@
PsiJavaFile:BlockSimple.java
PsiCodeBlock
PsiJavaToken:LBRACE('{')
PsiWhiteSpace(' ')
PsiBlockStatement
PsiCodeBlock
PsiJavaToken:LBRACE('{')
PsiJavaToken:RBRACE('}')
PsiWhiteSpace(' ')
PsiJavaToken:RBRACE('}')
@@ -0,0 +1,83 @@
PsiJavaFile:For.java
PsiCodeBlock
PsiJavaToken:LBRACE('{')
PsiWhiteSpace(' ')
PsiForStatement
PsiKeyword:for('for')
PsiJavaToken:LPARENTH('(')
PsiDeclarationStatement
PsiLocalVariable:it
PsiModifierList:
<empty list>
PsiTypeElement:Iterator<String>
PsiJavaCodeReferenceElement:Iterator<String>
PsiIdentifier:Iterator('Iterator')
PsiReferenceParameterList
PsiJavaToken:LT('<')
PsiTypeElement:String
PsiJavaCodeReferenceElement:String
PsiIdentifier:String('String')
PsiReferenceParameterList
<empty list>
PsiJavaToken:GT('>')
PsiWhiteSpace(' ')
PsiIdentifier:it('it')
PsiWhiteSpace(' ')
PsiJavaToken:EQ('=')
PsiWhiteSpace(' ')
PsiLiteralExpression:null
PsiJavaToken:NULL_KEYWORD('null')
PsiJavaToken:SEMICOLON(';')
PsiWhiteSpace(' ')
PsiMethodCallExpression:it.hasNext()
PsiReferenceExpression:it.hasNext
PsiReferenceExpression:it
PsiReferenceParameterList
<empty list>
PsiIdentifier:it('it')
PsiJavaToken:DOT('.')
PsiReferenceParameterList
<empty list>
PsiIdentifier:hasNext('hasNext')
PsiExpressionList
PsiJavaToken:LPARENTH('(')
PsiJavaToken:RPARENTH(')')
PsiJavaToken:SEMICOLON(';')
PsiJavaToken:RPARENTH(')')
PsiWhiteSpace(' ')
PsiBlockStatement
PsiCodeBlock
PsiJavaToken:LBRACE('{')
PsiWhiteSpace(' ')
PsiDeclarationStatement
PsiLocalVariable:s
PsiModifierList:
<empty list>
PsiTypeElement:String
PsiJavaCodeReferenceElement:String
PsiIdentifier:String('String')
PsiReferenceParameterList
<empty list>
PsiWhiteSpace(' ')
PsiIdentifier:s('s')
PsiWhiteSpace(' ')
PsiJavaToken:EQ('=')
PsiWhiteSpace(' ')
PsiMethodCallExpression:it.next()
PsiReferenceExpression:it.next
PsiReferenceExpression:it
PsiReferenceParameterList
<empty list>
PsiIdentifier:it('it')
PsiJavaToken:DOT('.')
PsiReferenceParameterList
<empty list>
PsiIdentifier:next('next')
PsiExpressionList
PsiJavaToken:LPARENTH('(')
PsiJavaToken:RPARENTH(')')
PsiJavaToken:SEMICOLON(';')
PsiWhiteSpace(' ')
PsiJavaToken:RBRACE('}')
PsiWhiteSpace(' ')
PsiJavaToken:RBRACE('}')
@@ -0,0 +1,39 @@
PsiJavaFile:ForEach.java
PsiCodeBlock
PsiJavaToken:LBRACE('{')
PsiWhiteSpace(' ')
PsiForeachStatement
PsiKeyword:for('for')
PsiJavaToken:LPARENTH('(')
PsiParameter:o
PsiModifierList:
<empty list>
PsiTypeElement:Object
PsiJavaCodeReferenceElement:Object
PsiIdentifier:Object('Object')
PsiReferenceParameterList
<empty list>
PsiWhiteSpace(' ')
PsiIdentifier:o('o')
PsiWhiteSpace(' ')
PsiJavaToken:COLON(':')
PsiWhiteSpace(' ')
PsiMethodCallExpression:map.entrySet()
PsiReferenceExpression:map.entrySet
PsiReferenceExpression:map
PsiReferenceParameterList
<empty list>
PsiIdentifier:map('map')
PsiJavaToken:DOT('.')
PsiReferenceParameterList
<empty list>
PsiIdentifier:entrySet('entrySet')
PsiExpressionList
PsiJavaToken:LPARENTH('(')
PsiJavaToken:RPARENTH(')')
PsiJavaToken:RPARENTH(')')
PsiWhiteSpace(' ')
PsiEmptyStatement
PsiJavaToken:SEMICOLON(';')
PsiWhiteSpace(' ')
PsiJavaToken:RBRACE('}')
@@ -0,0 +1,10 @@
PsiJavaFile:ForIncomplete0.java
PsiCodeBlock
PsiJavaToken:LBRACE('{')
PsiWhiteSpace(' ')
PsiForStatement
PsiKeyword:for('for')
PsiErrorElement:'(' expected
<empty list>
PsiWhiteSpace(' ')
PsiJavaToken:RBRACE('}')
@@ -0,0 +1,11 @@
PsiJavaFile:ForIncomplete1.java
PsiCodeBlock
PsiJavaToken:LBRACE('{')
PsiWhiteSpace(' ')
PsiForStatement
PsiKeyword:for('for')
PsiJavaToken:LPARENTH('(')
PsiErrorElement:Statement expected
<empty list>
PsiWhiteSpace(' ')
PsiJavaToken:RBRACE('}')
@@ -0,0 +1,25 @@
PsiJavaFile:ForIncomplete2.java
PsiCodeBlock
PsiJavaToken:LBRACE('{')
PsiWhiteSpace(' ')
PsiForStatement
PsiKeyword:for('for')
PsiJavaToken:LPARENTH('(')
PsiDeclarationStatement
PsiLocalVariable:i
PsiModifierList:
<empty list>
PsiTypeElement:int
PsiKeyword:int('int')
PsiWhiteSpace(' ')
PsiIdentifier:i('i')
PsiWhiteSpace(' ')
PsiJavaToken:EQ('=')
PsiWhiteSpace(' ')
PsiLiteralExpression:0
PsiJavaToken:INTEGER_LITERAL('0')
PsiJavaToken:SEMICOLON(';')
PsiErrorElement:';' expected
<empty list>
PsiWhiteSpace(' ')
PsiJavaToken:RBRACE('}')
@@ -0,0 +1,36 @@
PsiJavaFile:ForIncomplete3.java
PsiCodeBlock
PsiJavaToken:LBRACE('{')
PsiWhiteSpace(' ')
PsiForStatement
PsiKeyword:for('for')
PsiJavaToken:LPARENTH('(')
PsiDeclarationStatement
PsiLocalVariable:i
PsiModifierList:
<empty list>
PsiTypeElement:int
PsiKeyword:int('int')
PsiWhiteSpace(' ')
PsiIdentifier:i('i')
PsiWhiteSpace(' ')
PsiJavaToken:EQ('=')
PsiWhiteSpace(' ')
PsiLiteralExpression:0
PsiJavaToken:INTEGER_LITERAL('0')
PsiJavaToken:SEMICOLON(';')
PsiWhiteSpace(' ')
PsiBinaryExpression:i < 10
PsiReferenceExpression:i
PsiReferenceParameterList
<empty list>
PsiIdentifier:i('i')
PsiWhiteSpace(' ')
PsiJavaToken:LT('<')
PsiWhiteSpace(' ')
PsiLiteralExpression:10
PsiJavaToken:INTEGER_LITERAL('10')
PsiErrorElement:';' expected
<empty list>
PsiWhiteSpace(' ')
PsiJavaToken:RBRACE('}')
@@ -0,0 +1,37 @@
PsiJavaFile:ForIncomplete4.java
PsiCodeBlock
PsiJavaToken:LBRACE('{')
PsiWhiteSpace(' ')
PsiForStatement
PsiKeyword:for('for')
PsiJavaToken:LPARENTH('(')
PsiDeclarationStatement
PsiLocalVariable:i
PsiModifierList:
<empty list>
PsiTypeElement:int
PsiKeyword:int('int')
PsiWhiteSpace(' ')
PsiIdentifier:i('i')
PsiWhiteSpace(' ')
PsiJavaToken:EQ('=')
PsiWhiteSpace(' ')
PsiLiteralExpression:0
PsiJavaToken:INTEGER_LITERAL('0')
PsiJavaToken:SEMICOLON(';')
PsiWhiteSpace(' ')
PsiBinaryExpression:i < 10
PsiReferenceExpression:i
PsiReferenceParameterList
<empty list>
PsiIdentifier:i('i')
PsiWhiteSpace(' ')
PsiJavaToken:LT('<')
PsiWhiteSpace(' ')
PsiLiteralExpression:10
PsiJavaToken:INTEGER_LITERAL('10')
PsiJavaToken:SEMICOLON(';')
PsiErrorElement:')' expected
<empty list>
PsiWhiteSpace(' ')
PsiJavaToken:RBRACE('}')
@@ -0,0 +1,45 @@
PsiJavaFile:ForIncomplete5.java
PsiCodeBlock
PsiJavaToken:LBRACE('{')
PsiWhiteSpace(' ')
PsiForStatement
PsiKeyword:for('for')
PsiJavaToken:LPARENTH('(')
PsiDeclarationStatement
PsiLocalVariable:i
PsiModifierList:
<empty list>
PsiTypeElement:int
PsiKeyword:int('int')
PsiWhiteSpace(' ')
PsiIdentifier:i('i')
PsiWhiteSpace(' ')
PsiJavaToken:EQ('=')
PsiWhiteSpace(' ')
PsiLiteralExpression:0
PsiJavaToken:INTEGER_LITERAL('0')
PsiJavaToken:SEMICOLON(';')
PsiWhiteSpace(' ')
PsiBinaryExpression:i < 10
PsiReferenceExpression:i
PsiReferenceParameterList
<empty list>
PsiIdentifier:i('i')
PsiWhiteSpace(' ')
PsiJavaToken:LT('<')
PsiWhiteSpace(' ')
PsiLiteralExpression:10
PsiJavaToken:INTEGER_LITERAL('10')
PsiJavaToken:SEMICOLON(';')
PsiWhiteSpace(' ')
PsiExpressionStatement
PsiPostfixExpression:i++
PsiReferenceExpression:i
PsiReferenceParameterList
<empty list>
PsiIdentifier:i('i')
PsiJavaToken:PLUSPLUS('++')
PsiErrorElement:')' expected
<empty list>
PsiWhiteSpace(' ')
PsiJavaToken:RBRACE('}')
@@ -0,0 +1,46 @@
PsiJavaFile:ForIncomplete6.java
PsiCodeBlock
PsiJavaToken:LBRACE('{')
PsiWhiteSpace(' ')
PsiForStatement
PsiKeyword:for('for')
PsiJavaToken:LPARENTH('(')
PsiDeclarationStatement
PsiLocalVariable:i
PsiModifierList:
<empty list>
PsiTypeElement:int
PsiKeyword:int('int')
PsiWhiteSpace(' ')
PsiIdentifier:i('i')
PsiWhiteSpace(' ')
PsiJavaToken:EQ('=')
PsiWhiteSpace(' ')
PsiLiteralExpression:0
PsiJavaToken:INTEGER_LITERAL('0')
PsiJavaToken:SEMICOLON(';')
PsiWhiteSpace(' ')
PsiBinaryExpression:i < 10
PsiReferenceExpression:i
PsiReferenceParameterList
<empty list>
PsiIdentifier:i('i')
PsiWhiteSpace(' ')
PsiJavaToken:LT('<')
PsiWhiteSpace(' ')
PsiLiteralExpression:10
PsiJavaToken:INTEGER_LITERAL('10')
PsiJavaToken:SEMICOLON(';')
PsiWhiteSpace(' ')
PsiExpressionStatement
PsiPostfixExpression:i++
PsiReferenceExpression:i
PsiReferenceParameterList
<empty list>
PsiIdentifier:i('i')
PsiJavaToken:PLUSPLUS('++')
PsiJavaToken:RPARENTH(')')
PsiErrorElement:Statement expected
<empty list>
PsiWhiteSpace(' ')
PsiJavaToken:RBRACE('}')
@@ -0,0 +1,23 @@
PsiJavaFile:ForIncomplete7.java
PsiCodeBlock
PsiJavaToken:LBRACE('{')
PsiWhiteSpace(' ')
PsiForStatement
PsiKeyword:for('for')
PsiJavaToken:LPARENTH('(')
PsiErrorElement:Statement expected
<empty list>
PsiJavaToken:RPARENTH(')')
PsiWhiteSpace(' ')
PsiExpressionStatement
PsiMethodCallExpression:foo()
PsiReferenceExpression:foo
PsiReferenceParameterList
<empty list>
PsiIdentifier:foo('foo')
PsiExpressionList
PsiJavaToken:LPARENTH('(')
PsiJavaToken:RPARENTH(')')
PsiJavaToken:SEMICOLON(';')
PsiWhiteSpace(' ')
PsiJavaToken:RBRACE('}')
@@ -0,0 +1,37 @@
PsiJavaFile:ForIncomplete8.java
PsiCodeBlock
PsiJavaToken:LBRACE('{')
PsiWhiteSpace(' ')
PsiForStatement
PsiKeyword:for('for')
PsiJavaToken:LPARENTH('(')
PsiDeclarationStatement
PsiLocalVariable:i
PsiModifierList:
<empty list>
PsiTypeElement:int
PsiKeyword:int('int')
PsiWhiteSpace(' ')
PsiIdentifier:i('i')
PsiWhiteSpace(' ')
PsiJavaToken:EQ('=')
PsiWhiteSpace(' ')
PsiLiteralExpression:0
PsiJavaToken:INTEGER_LITERAL('0')
PsiJavaToken:SEMICOLON(';')
PsiErrorElement:';' expected
<empty list>
PsiJavaToken:RPARENTH(')')
PsiWhiteSpace(' ')
PsiExpressionStatement
PsiMethodCallExpression:foo()
PsiReferenceExpression:foo
PsiReferenceParameterList
<empty list>
PsiIdentifier:foo('foo')
PsiExpressionList
PsiJavaToken:LPARENTH('(')
PsiJavaToken:RPARENTH(')')
PsiJavaToken:SEMICOLON(';')
PsiWhiteSpace(' ')
PsiJavaToken:RBRACE('}')
@@ -0,0 +1,48 @@
PsiJavaFile:ForIncomplete9.java
PsiCodeBlock
PsiJavaToken:LBRACE('{')
PsiWhiteSpace(' ')
PsiForStatement
PsiKeyword:for('for')
PsiJavaToken:LPARENTH('(')
PsiDeclarationStatement
PsiLocalVariable:i
PsiModifierList:
<empty list>
PsiTypeElement:int
PsiKeyword:int('int')
PsiWhiteSpace(' ')
PsiIdentifier:i('i')
PsiWhiteSpace(' ')
PsiJavaToken:EQ('=')
PsiWhiteSpace(' ')
PsiLiteralExpression:0
PsiJavaToken:INTEGER_LITERAL('0')
PsiJavaToken:SEMICOLON(';')
PsiWhiteSpace(' ')
PsiBinaryExpression:i < 0
PsiReferenceExpression:i
PsiReferenceParameterList
<empty list>
PsiIdentifier:i('i')
PsiWhiteSpace(' ')
PsiJavaToken:LT('<')
PsiWhiteSpace(' ')
PsiLiteralExpression:0
PsiJavaToken:INTEGER_LITERAL('0')
PsiErrorElement:';' expected
<empty list>
PsiJavaToken:RPARENTH(')')
PsiWhiteSpace(' ')
PsiExpressionStatement
PsiMethodCallExpression:foo()
PsiReferenceExpression:foo
PsiReferenceParameterList
<empty list>
PsiIdentifier:foo('foo')
PsiExpressionList
PsiJavaToken:LPARENTH('(')
PsiJavaToken:RPARENTH(')')
PsiJavaToken:SEMICOLON(';')
PsiWhiteSpace(' ')
PsiJavaToken:RBRACE('}')
@@ -0,0 +1,47 @@
PsiJavaFile:ForNormal0.java
PsiCodeBlock
PsiJavaToken:LBRACE('{')
PsiWhiteSpace(' ')
PsiForStatement
PsiKeyword:for('for')
PsiJavaToken:LPARENTH('(')
PsiDeclarationStatement
PsiLocalVariable:i
PsiModifierList:
<empty list>
PsiTypeElement:int
PsiKeyword:int('int')
PsiWhiteSpace(' ')
PsiIdentifier:i('i')
PsiWhiteSpace(' ')
PsiJavaToken:EQ('=')
PsiWhiteSpace(' ')
PsiLiteralExpression:0
PsiJavaToken:INTEGER_LITERAL('0')
PsiJavaToken:SEMICOLON(';')
PsiWhiteSpace(' ')
PsiBinaryExpression:i < 10
PsiReferenceExpression:i
PsiReferenceParameterList
<empty list>
PsiIdentifier:i('i')
PsiWhiteSpace(' ')
PsiJavaToken:LT('<')
PsiWhiteSpace(' ')
PsiLiteralExpression:10
PsiJavaToken:INTEGER_LITERAL('10')
PsiJavaToken:SEMICOLON(';')
PsiWhiteSpace(' ')
PsiExpressionStatement
PsiPostfixExpression:i++
PsiReferenceExpression:i
PsiReferenceParameterList
<empty list>
PsiIdentifier:i('i')
PsiJavaToken:PLUSPLUS('++')
PsiJavaToken:RPARENTH(')')
PsiWhiteSpace('\n ')
PsiEmptyStatement
PsiJavaToken:SEMICOLON(';')
PsiWhiteSpace(' ')
PsiJavaToken:RBRACE('}')
@@ -0,0 +1,27 @@
PsiJavaFile:ForNormal1.java
PsiCodeBlock
PsiJavaToken:LBRACE('{')
PsiWhiteSpace(' ')
PsiForStatement
PsiKeyword:for('for')
PsiJavaToken:LPARENTH('(')
PsiWhiteSpace(' ')
PsiEmptyStatement
PsiJavaToken:SEMICOLON(';')
PsiWhiteSpace(' ')
PsiJavaToken:SEMICOLON(';')
PsiWhiteSpace(' ')
PsiJavaToken:RPARENTH(')')
PsiWhiteSpace(' ')
PsiExpressionStatement
PsiMethodCallExpression:foo()
PsiReferenceExpression:foo
PsiReferenceParameterList
<empty list>
PsiIdentifier:foo('foo')
PsiExpressionList
PsiJavaToken:LPARENTH('(')
PsiJavaToken:RPARENTH(')')
PsiJavaToken:SEMICOLON(';')
PsiWhiteSpace(' ')
PsiJavaToken:RBRACE('}')
@@ -0,0 +1,10 @@
PsiJavaFile:IfIncomplete0.java
PsiCodeBlock
PsiJavaToken:LBRACE('{')
PsiWhiteSpace(' ')
PsiIfStatement
PsiKeyword:if('if')
PsiErrorElement:'(' expected
<empty list>
PsiWhiteSpace(' ')
PsiJavaToken:RBRACE('}')
@@ -0,0 +1,12 @@
PsiJavaFile:IfIncomplete1.java
PsiCodeBlock
PsiJavaToken:LBRACE('{')
PsiWhiteSpace(' ')
PsiIfStatement
PsiKeyword:if('if')
PsiWhiteSpace(' ')
PsiJavaToken:LPARENTH('(')
PsiErrorElement:Expression expected
<empty list>
PsiWhiteSpace(' ')
PsiJavaToken:RBRACE('}')
@@ -0,0 +1,23 @@
PsiJavaFile:IfIncomplete2.java
PsiCodeBlock
PsiJavaToken:LBRACE('{')
PsiWhiteSpace(' ')
PsiIfStatement
PsiKeyword:if('if')
PsiWhiteSpace(' ')
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,16 @@
PsiJavaFile:IfIncomplete3.java
PsiCodeBlock
PsiJavaToken:LBRACE('{')
PsiWhiteSpace(' ')
PsiIfStatement
PsiKeyword:if('if')
PsiWhiteSpace(' ')
PsiJavaToken:LPARENTH('(')
PsiReferenceExpression:cond
PsiReferenceParameterList
<empty list>
PsiIdentifier:cond('cond')
PsiErrorElement:')' expected
<empty list>
PsiWhiteSpace(' ')
PsiJavaToken:RBRACE('}')
@@ -0,0 +1,17 @@
PsiJavaFile:IfIncomplete4.java
PsiCodeBlock
PsiJavaToken:LBRACE('{')
PsiWhiteSpace(' ')
PsiIfStatement
PsiKeyword:if('if')
PsiWhiteSpace(' ')
PsiJavaToken:LPARENTH('(')
PsiReferenceExpression:cond
PsiReferenceParameterList
<empty list>
PsiIdentifier:cond('cond')
PsiJavaToken:RPARENTH(')')
PsiErrorElement:Statement expected
<empty list>
PsiWhiteSpace(' ')
PsiJavaToken:RBRACE('}')
@@ -0,0 +1,24 @@
PsiJavaFile:IfIncomplete5.java
PsiCodeBlock
PsiJavaToken:LBRACE('{')
PsiWhiteSpace(' ')
PsiIfStatement
PsiKeyword:if('if')
PsiWhiteSpace(' ')
PsiJavaToken:LPARENTH('(')
PsiErrorElement:Expression expected
<empty list>
PsiJavaToken:RPARENTH(')')
PsiWhiteSpace(' ')
PsiExpressionStatement
PsiMethodCallExpression:foo()
PsiReferenceExpression:foo
PsiReferenceParameterList
<empty list>
PsiIdentifier:foo('foo')
PsiExpressionList
PsiJavaToken:LPARENTH('(')
PsiJavaToken:RPARENTH(')')
PsiJavaToken:SEMICOLON(';')
PsiWhiteSpace(' ')
PsiJavaToken:RBRACE('}')
@@ -0,0 +1,30 @@
PsiJavaFile:IfIncomplete6.java
PsiCodeBlock
PsiJavaToken:LBRACE('{')
PsiWhiteSpace(' ')
PsiIfStatement
PsiKeyword:if('if')
PsiWhiteSpace(' ')
PsiJavaToken:LPARENTH('(')
PsiReferenceExpression:cond
PsiReferenceParameterList
<empty list>
PsiIdentifier:cond('cond')
PsiJavaToken:RPARENTH(')')
PsiWhiteSpace(' ')
PsiExpressionStatement
PsiMethodCallExpression:foo()
PsiReferenceExpression:foo
PsiReferenceParameterList
<empty list>
PsiIdentifier:foo('foo')
PsiExpressionList
PsiJavaToken:LPARENTH('(')
PsiJavaToken:RPARENTH(')')
PsiJavaToken:SEMICOLON(';')
PsiWhiteSpace(' ')
PsiKeyword:else('else')
PsiErrorElement:Statement expected
<empty list>
PsiWhiteSpace(' ')
PsiJavaToken:RBRACE('}')
@@ -0,0 +1,26 @@
PsiJavaFile:IfNormalNoElse.java
PsiCodeBlock
PsiJavaToken:LBRACE('{')
PsiWhiteSpace(' ')
PsiIfStatement
PsiKeyword:if('if')
PsiWhiteSpace(' ')
PsiJavaToken:LPARENTH('(')
PsiReferenceExpression:a
PsiReferenceParameterList
<empty list>
PsiIdentifier:a('a')
PsiJavaToken:RPARENTH(')')
PsiWhiteSpace(' ')
PsiExpressionStatement
PsiMethodCallExpression:f1()
PsiReferenceExpression:f1
PsiReferenceParameterList
<empty list>
PsiIdentifier:f1('f1')
PsiExpressionList
PsiJavaToken:LPARENTH('(')
PsiJavaToken:RPARENTH(')')
PsiJavaToken:SEMICOLON(';')
PsiWhiteSpace(' ')
PsiJavaToken:RBRACE('}')
@@ -0,0 +1,49 @@
PsiJavaFile:IfNormalWithElse.java
PsiCodeBlock
PsiJavaToken:LBRACE('{')
PsiWhiteSpace(' ')
PsiIfStatement
PsiKeyword:if('if')
PsiWhiteSpace(' ')
PsiJavaToken:LPARENTH('(')
PsiReferenceExpression:a
PsiReferenceParameterList
<empty list>
PsiIdentifier:a('a')
PsiJavaToken:RPARENTH(')')
PsiBlockStatement
PsiCodeBlock
PsiJavaToken:LBRACE('{')
PsiWhiteSpace(' ')
PsiExpressionStatement
PsiMethodCallExpression:f1()
PsiReferenceExpression:f1
PsiReferenceParameterList
<empty list>
PsiIdentifier:f1('f1')
PsiExpressionList
PsiJavaToken:LPARENTH('(')
PsiJavaToken:RPARENTH(')')
PsiJavaToken:SEMICOLON(';')
PsiWhiteSpace(' ')
PsiJavaToken:RBRACE('}')
PsiWhiteSpace(' ')
PsiKeyword:else('else')
PsiBlockStatement
PsiCodeBlock
PsiJavaToken:LBRACE('{')
PsiWhiteSpace(' ')
PsiExpressionStatement
PsiMethodCallExpression:f2()
PsiReferenceExpression:f2
PsiReferenceParameterList
<empty list>
PsiIdentifier:f2('f2')
PsiExpressionList
PsiJavaToken:LPARENTH('(')
PsiJavaToken:RPARENTH(')')
PsiJavaToken:SEMICOLON(';')
PsiWhiteSpace(' ')
PsiJavaToken:RBRACE('}')
PsiWhiteSpace(' ')
PsiJavaToken:RBRACE('}')
@@ -0,0 +1,19 @@
PsiJavaFile:LabelSimple.java
PsiCodeBlock
PsiJavaToken:LBRACE('{')
PsiWhiteSpace(' ')
PsiLabeledStatement
PsiIdentifier:Loop('Loop')
PsiJavaToken:COLON(':')
PsiWhiteSpace('\n ')
PsiWhileStatement
PsiKeyword:while('while')
PsiJavaToken:LPARENTH('(')
PsiLiteralExpression:true
PsiJavaToken:TRUE_KEYWORD('true')
PsiJavaToken:RPARENTH(')')
PsiWhiteSpace(' ')
PsiEmptyStatement
PsiJavaToken:SEMICOLON(';')
PsiWhiteSpace(' ')
PsiJavaToken:RBRACE('}')
@@ -0,0 +1,24 @@
PsiJavaFile:LocalVar.java
PsiCodeBlock
PsiJavaToken:LBRACE('{')
PsiWhiteSpace(' ')
PsiDeclarationStatement
PsiLocalVariable:list
PsiModifierList:
<empty list>
PsiTypeElement:List<Integer>
PsiJavaCodeReferenceElement:List<Integer>
PsiIdentifier:List('List')
PsiReferenceParameterList
PsiJavaToken:LT('<')
PsiTypeElement:Integer
PsiJavaCodeReferenceElement:Integer
PsiIdentifier:Integer('Integer')
PsiReferenceParameterList
<empty list>
PsiJavaToken:GT('>')
PsiWhiteSpace(' ')
PsiIdentifier:list('list')
PsiJavaToken:SEMICOLON(';')
PsiWhiteSpace(' ')
PsiJavaToken:RBRACE('}')
@@ -0,0 +1,10 @@
PsiJavaFile:WhileIncomplete0.java
PsiCodeBlock
PsiJavaToken:LBRACE('{')
PsiWhiteSpace(' ')
PsiWhileStatement
PsiKeyword:while('while')
PsiErrorElement:'(' expected
<empty list>
PsiWhiteSpace(' ')
PsiJavaToken:RBRACE('}')
@@ -0,0 +1,12 @@
PsiJavaFile:WhileIncomplete1.java
PsiCodeBlock
PsiJavaToken:LBRACE('{')
PsiWhiteSpace(' ')
PsiWhileStatement
PsiKeyword:while('while')
PsiWhiteSpace(' ')
PsiJavaToken:LPARENTH('(')
PsiErrorElement:Expression expected
<empty list>
PsiWhiteSpace(' ')
PsiJavaToken:RBRACE('}')
@@ -0,0 +1,22 @@
PsiJavaFile:WhileIncomplete2.java
PsiCodeBlock
PsiJavaToken:LBRACE('{')
PsiWhiteSpace(' ')
PsiWhileStatement
PsiKeyword:while('while')
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,15 @@
PsiJavaFile:WhileIncomplete3.java
PsiCodeBlock
PsiJavaToken:LBRACE('{')
PsiWhiteSpace(' ')
PsiWhileStatement
PsiKeyword:while('while')
PsiJavaToken:LPARENTH('(')
PsiReferenceExpression:cond
PsiReferenceParameterList
<empty list>
PsiIdentifier:cond('cond')
PsiErrorElement:')' expected
<empty list>
PsiWhiteSpace(' ')
PsiJavaToken:RBRACE('}')
@@ -0,0 +1,16 @@
PsiJavaFile:WhileIncomplete4.java
PsiCodeBlock
PsiJavaToken:LBRACE('{')
PsiWhiteSpace(' ')
PsiWhileStatement
PsiKeyword:while('while')
PsiJavaToken:LPARENTH('(')
PsiReferenceExpression:cond
PsiReferenceParameterList
<empty list>
PsiIdentifier:cond('cond')
PsiJavaToken:RPARENTH(')')
PsiErrorElement:Statement expected
<empty list>
PsiWhiteSpace(' ')
PsiJavaToken:RBRACE('}')
@@ -0,0 +1,23 @@
PsiJavaFile:WhileIncomplete5.java
PsiCodeBlock
PsiJavaToken:LBRACE('{')
PsiWhiteSpace(' ')
PsiWhileStatement
PsiKeyword:while('while')
PsiJavaToken:LPARENTH('(')
PsiErrorElement:Expression expected
<empty list>
PsiJavaToken:RPARENTH(')')
PsiWhiteSpace(' ')
PsiExpressionStatement
PsiMethodCallExpression:foo()
PsiReferenceExpression:foo
PsiReferenceParameterList
<empty list>
PsiIdentifier:foo('foo')
PsiExpressionList
PsiJavaToken:LPARENTH('(')
PsiJavaToken:RPARENTH(')')
PsiJavaToken:SEMICOLON(';')
PsiWhiteSpace(' ')
PsiJavaToken:RBRACE('}')
@@ -0,0 +1,24 @@
PsiJavaFile:WhileNormal.java
PsiCodeBlock
PsiJavaToken:LBRACE('{')
PsiWhiteSpace(' ')
PsiWhileStatement
PsiKeyword:while('while')
PsiWhiteSpace(' ')
PsiJavaToken:LPARENTH('(')
PsiLiteralExpression:true
PsiJavaToken:TRUE_KEYWORD('true')
PsiJavaToken:RPARENTH(')')
PsiWhiteSpace(' ')
PsiExpressionStatement
PsiMethodCallExpression:foo()
PsiReferenceExpression:foo
PsiReferenceParameterList
<empty list>
PsiIdentifier:foo('foo')
PsiExpressionList
PsiJavaToken:LPARENTH('(')
PsiJavaToken:RPARENTH(')')
PsiJavaToken:SEMICOLON(';')
PsiWhiteSpace(' ')
PsiJavaToken:RBRACE('}')
@@ -0,0 +1,88 @@
/*
* Copyright 2000-2010 JetBrains s.r.o.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.intellij.lang.java.parser.partial;
import com.intellij.lang.PsiBuilder;
import com.intellij.lang.java.parser.JavaParsingTestCase;
import com.intellij.lang.java.parser.StatementParser;
public class StatementParserTest extends JavaParsingTestCase {
public StatementParserTest() {
super("parser-partial/statements");
}
public void testAssertNormal0() { doParserTest("{ assert cond; }"); }
public void testAssertNormal1() { doParserTest("{ assert cond : message; }"); }
public void testAssignmentSimple() { doParserTest("{ int[] a;\n a[0] = 0; }"); }
public void testBlockSimple() { doParserTest("{ {} }"); }
//public void testAnonymousInSmartCompletion() { doParserTest("{ new Foo(hash\n#) {};\n new Foo(hash\n#, bar) {};\n new Foo(hash\n#x) {}; }"); } // todo: spaces
public void testLocalVar() { doParserTest("{ List<Integer> list; }"); }
public void testFor() { doParserTest("{ for(Iterator<String> it = null; it.hasNext();) { String s = it.next(); } }"); }
//DoWhileParsingTest
public void testForNormal0() { doParserTest("{ for(int i = 0; i < 10; i++)\n ; }"); }
public void testForNormal1() { doParserTest("{ for( ; ; ) foo(); }"); }
public void testForEach() { doParserTest("{ for(Object o : map.entrySet()) ; }"); }
public void testForIncomplete0() { doParserTest("{ for }"); }
public void testForIncomplete1() { doParserTest("{ for( }"); }
public void testForIncomplete2() { doParserTest("{ for(int i = 0; }"); }
public void testForIncomplete3() { doParserTest("{ for(int i = 0; i < 10 }"); }
public void testForIncomplete4() { doParserTest("{ for(int i = 0; i < 10; }"); }
public void testForIncomplete5() { doParserTest("{ for(int i = 0; i < 10; i++ }"); }
public void testForIncomplete6() { doParserTest("{ for(int i = 0; i < 10; i++) }"); }
public void testForIncomplete7() { doParserTest("{ for() foo(); }"); }
public void testForIncomplete8() { doParserTest("{ for(int i = 0;) foo(); }"); }
public void testForIncomplete9() { doParserTest("{ for(int i = 0; i < 0) foo(); }"); }
public void testIfNormalWithElse() { doParserTest("{ if (a){ f1(); } else{ f2(); } }"); }
public void testIfNormalNoElse() { doParserTest("{ if (a) f1(); }"); }
public void testIfIncomplete0() { doParserTest("{ if }"); }
public void testIfIncomplete1() { doParserTest("{ if ( }"); }
public void testIfIncomplete2() { doParserTest("{ if (\n foo(); }"); }
public void testIfIncomplete3() { doParserTest("{ if (cond }"); }
public void testIfIncomplete4() { doParserTest("{ if (cond) }"); }
public void testIfIncomplete5() { doParserTest("{ if () foo(); }"); }
public void testIfIncomplete6() { doParserTest("{ if (cond) foo(); else }"); }
public void testLabelSimple() { doParserTest("{ Loop:\n while(true) ; }"); }
//ReturnParsingTest
//SwitchParsingTest
//SynchronizedParsingTest
//ThrowParsingTest
//TryParsingTest
public void testWhileNormal() { doParserTest("{ while (true) foo(); }"); }
public void testWhileIncomplete0() { doParserTest("{ while }"); }
public void testWhileIncomplete1() { doParserTest("{ while ( }"); }
public void testWhileIncomplete2() { doParserTest("{ while(\n foo(); }"); }
public void testWhileIncomplete3() { doParserTest("{ while(cond }"); }
public void testWhileIncomplete4() { doParserTest("{ while(cond) }"); }
public void testWhileIncomplete5() { doParserTest("{ while() foo(); }"); }
private void doParserTest(final String text) {
doParserTest(text, new Parser() {
public void parse(final PsiBuilder builder) {
StatementParser.parseCodeBlockDeep(builder, true);
}
});
}
}