Parser: Do not produce JetQualifiedExpression without receiver

#KT-7122 Fixed
This commit is contained in:
Alexey Sedunov
2015-03-26 13:21:05 +03:00
parent cbcd2c3cce
commit 4ec1b9971f
14 changed files with 428 additions and 12 deletions
@@ -0,0 +1,3 @@
fun test() {
MyClass.<warning descr="">Companion</warning>.test
}
@@ -0,0 +1,52 @@
JetFile: noQualifiedExpression.kt
PACKAGE_DIRECTIVE
<empty list>
FUN
PsiElement(fun)('fun')
PsiWhiteSpace(' ')
PsiElement(IDENTIFIER)('test')
VALUE_PARAMETER_LIST
PsiElement(LPAR)('(')
PsiElement(RPAR)(')')
PsiWhiteSpace(' ')
BLOCK
PsiElement(LBRACE)('{')
PsiWhiteSpace('\n ')
BINARY_EXPRESSION
BINARY_EXPRESSION
DOT_QUALIFIED_EXPRESSION
REFERENCE_EXPRESSION
PsiElement(IDENTIFIER)('MyClass')
PsiElement(DOT)('.')
PsiErrorElement:Expecting an element
PsiElement(LT)('<')
OPERATION_REFERENCE
PsiElement(IDENTIFIER)('warning')
PsiWhiteSpace(' ')
REFERENCE_EXPRESSION
PsiElement(IDENTIFIER)('descr')
OPERATION_REFERENCE
PsiElement(EQ)('=')
BINARY_EXPRESSION
BINARY_EXPRESSION
STRING_TEMPLATE
PsiElement(OPEN_QUOTE)('"')
PsiElement(CLOSING_QUOTE)('"')
OPERATION_REFERENCE
PsiElement(GT)('>')
REFERENCE_EXPRESSION
PsiElement(IDENTIFIER)('Companion')
OPERATION_REFERENCE
PsiElement(LT)('<')
BINARY_EXPRESSION
PsiErrorElement:Expecting an element
PsiElement(DIV)('/')
OPERATION_REFERENCE
PsiElement(IDENTIFIER)('warning')
PsiErrorElement:Expecting an element
PsiElement(GT)('>')
PsiElement(DOT)('.')
REFERENCE_EXPRESSION
PsiElement(IDENTIFIER)('test')
PsiWhiteSpace('\n')
PsiElement(RBRACE)('}')
@@ -0,0 +1,3 @@
fun test() {
MyClass.<warning descr="">Companion</warning>?.test
}
@@ -0,0 +1,52 @@
JetFile: noSafeQualifiedExpression.kt
PACKAGE_DIRECTIVE
<empty list>
FUN
PsiElement(fun)('fun')
PsiWhiteSpace(' ')
PsiElement(IDENTIFIER)('test')
VALUE_PARAMETER_LIST
PsiElement(LPAR)('(')
PsiElement(RPAR)(')')
PsiWhiteSpace(' ')
BLOCK
PsiElement(LBRACE)('{')
PsiWhiteSpace('\n ')
BINARY_EXPRESSION
BINARY_EXPRESSION
DOT_QUALIFIED_EXPRESSION
REFERENCE_EXPRESSION
PsiElement(IDENTIFIER)('MyClass')
PsiElement(DOT)('.')
PsiErrorElement:Expecting an element
PsiElement(LT)('<')
OPERATION_REFERENCE
PsiElement(IDENTIFIER)('warning')
PsiWhiteSpace(' ')
REFERENCE_EXPRESSION
PsiElement(IDENTIFIER)('descr')
OPERATION_REFERENCE
PsiElement(EQ)('=')
BINARY_EXPRESSION
BINARY_EXPRESSION
STRING_TEMPLATE
PsiElement(OPEN_QUOTE)('"')
PsiElement(CLOSING_QUOTE)('"')
OPERATION_REFERENCE
PsiElement(GT)('>')
REFERENCE_EXPRESSION
PsiElement(IDENTIFIER)('Companion')
OPERATION_REFERENCE
PsiElement(LT)('<')
BINARY_EXPRESSION
PsiErrorElement:Expecting an element
PsiElement(DIV)('/')
OPERATION_REFERENCE
PsiElement(IDENTIFIER)('warning')
PsiErrorElement:Expecting an element
PsiElement(GT)('>')
PsiElement(SAFE_ACCESS)('?.')
REFERENCE_EXPRESSION
PsiElement(IDENTIFIER)('test')
PsiWhiteSpace('\n')
PsiElement(RBRACE)('}')
@@ -0,0 +1,3 @@
fun test() {
MyClass.<warning descr="">Companion</warning>.test.test
}
@@ -0,0 +1,56 @@
JetFile: qualifiedExpressionWithSelector.kt
PACKAGE_DIRECTIVE
<empty list>
FUN
PsiElement(fun)('fun')
PsiWhiteSpace(' ')
PsiElement(IDENTIFIER)('test')
VALUE_PARAMETER_LIST
PsiElement(LPAR)('(')
PsiElement(RPAR)(')')
PsiWhiteSpace(' ')
BLOCK
PsiElement(LBRACE)('{')
PsiWhiteSpace('\n ')
BINARY_EXPRESSION
BINARY_EXPRESSION
DOT_QUALIFIED_EXPRESSION
REFERENCE_EXPRESSION
PsiElement(IDENTIFIER)('MyClass')
PsiElement(DOT)('.')
PsiErrorElement:Expecting an element
PsiElement(LT)('<')
OPERATION_REFERENCE
PsiElement(IDENTIFIER)('warning')
PsiWhiteSpace(' ')
REFERENCE_EXPRESSION
PsiElement(IDENTIFIER)('descr')
OPERATION_REFERENCE
PsiElement(EQ)('=')
BINARY_EXPRESSION
BINARY_EXPRESSION
STRING_TEMPLATE
PsiElement(OPEN_QUOTE)('"')
PsiElement(CLOSING_QUOTE)('"')
OPERATION_REFERENCE
PsiElement(GT)('>')
REFERENCE_EXPRESSION
PsiElement(IDENTIFIER)('Companion')
OPERATION_REFERENCE
PsiElement(LT)('<')
BINARY_EXPRESSION
PsiErrorElement:Expecting an element
PsiElement(DIV)('/')
OPERATION_REFERENCE
PsiElement(IDENTIFIER)('warning')
PsiErrorElement:Expecting an element
PsiElement(GT)('>')
PsiElement(DOT)('.')
DOT_QUALIFIED_EXPRESSION
REFERENCE_EXPRESSION
PsiElement(IDENTIFIER)('test')
PsiElement(DOT)('.')
REFERENCE_EXPRESSION
PsiElement(IDENTIFIER)('test')
PsiWhiteSpace('\n')
PsiElement(RBRACE)('}')
@@ -0,0 +1,3 @@
fun test() {
MyClass.<warning descr="">Companion</warning>.test.<ff>
}
@@ -0,0 +1,61 @@
JetFile: qualifiedExpressionWithoutSelector.kt
PACKAGE_DIRECTIVE
<empty list>
FUN
PsiElement(fun)('fun')
PsiWhiteSpace(' ')
PsiElement(IDENTIFIER)('test')
VALUE_PARAMETER_LIST
PsiElement(LPAR)('(')
PsiElement(RPAR)(')')
PsiWhiteSpace(' ')
BLOCK
PsiElement(LBRACE)('{')
PsiWhiteSpace('\n ')
BINARY_EXPRESSION
BINARY_EXPRESSION
DOT_QUALIFIED_EXPRESSION
REFERENCE_EXPRESSION
PsiElement(IDENTIFIER)('MyClass')
PsiElement(DOT)('.')
PsiErrorElement:Expecting an element
PsiElement(LT)('<')
OPERATION_REFERENCE
PsiElement(IDENTIFIER)('warning')
PsiWhiteSpace(' ')
REFERENCE_EXPRESSION
PsiElement(IDENTIFIER)('descr')
OPERATION_REFERENCE
PsiElement(EQ)('=')
BINARY_EXPRESSION
BINARY_EXPRESSION
STRING_TEMPLATE
PsiElement(OPEN_QUOTE)('"')
PsiElement(CLOSING_QUOTE)('"')
OPERATION_REFERENCE
PsiElement(GT)('>')
REFERENCE_EXPRESSION
PsiElement(IDENTIFIER)('Companion')
OPERATION_REFERENCE
PsiElement(LT)('<')
BINARY_EXPRESSION
BINARY_EXPRESSION
PsiErrorElement:Expecting an element
PsiElement(DIV)('/')
OPERATION_REFERENCE
PsiElement(IDENTIFIER)('warning')
PsiErrorElement:Expecting an element
PsiElement(GT)('>')
PsiElement(DOT)('.')
DOT_QUALIFIED_EXPRESSION
REFERENCE_EXPRESSION
PsiElement(IDENTIFIER)('test')
PsiElement(DOT)('.')
PsiErrorElement:Expecting an element
PsiElement(LT)('<')
OPERATION_REFERENCE
PsiElement(IDENTIFIER)('ff')
PsiErrorElement:Expecting an element
PsiElement(GT)('>')
PsiWhiteSpace('\n')
PsiElement(RBRACE)('}')
@@ -0,0 +1,3 @@
fun test() {
MyClass.<warning descr="">Companion</warning>?.test?.test
}
@@ -0,0 +1,56 @@
JetFile: safeQualifiedExpressionWithSelector.kt
PACKAGE_DIRECTIVE
<empty list>
FUN
PsiElement(fun)('fun')
PsiWhiteSpace(' ')
PsiElement(IDENTIFIER)('test')
VALUE_PARAMETER_LIST
PsiElement(LPAR)('(')
PsiElement(RPAR)(')')
PsiWhiteSpace(' ')
BLOCK
PsiElement(LBRACE)('{')
PsiWhiteSpace('\n ')
BINARY_EXPRESSION
BINARY_EXPRESSION
DOT_QUALIFIED_EXPRESSION
REFERENCE_EXPRESSION
PsiElement(IDENTIFIER)('MyClass')
PsiElement(DOT)('.')
PsiErrorElement:Expecting an element
PsiElement(LT)('<')
OPERATION_REFERENCE
PsiElement(IDENTIFIER)('warning')
PsiWhiteSpace(' ')
REFERENCE_EXPRESSION
PsiElement(IDENTIFIER)('descr')
OPERATION_REFERENCE
PsiElement(EQ)('=')
BINARY_EXPRESSION
BINARY_EXPRESSION
STRING_TEMPLATE
PsiElement(OPEN_QUOTE)('"')
PsiElement(CLOSING_QUOTE)('"')
OPERATION_REFERENCE
PsiElement(GT)('>')
REFERENCE_EXPRESSION
PsiElement(IDENTIFIER)('Companion')
OPERATION_REFERENCE
PsiElement(LT)('<')
BINARY_EXPRESSION
PsiErrorElement:Expecting an element
PsiElement(DIV)('/')
OPERATION_REFERENCE
PsiElement(IDENTIFIER)('warning')
PsiErrorElement:Expecting an element
PsiElement(GT)('>')
PsiElement(SAFE_ACCESS)('?.')
SAFE_ACCESS_EXPRESSION
REFERENCE_EXPRESSION
PsiElement(IDENTIFIER)('test')
PsiElement(SAFE_ACCESS)('?.')
REFERENCE_EXPRESSION
PsiElement(IDENTIFIER)('test')
PsiWhiteSpace('\n')
PsiElement(RBRACE)('}')
@@ -0,0 +1,3 @@
fun test() {
MyClass.<warning descr="">Companion</warning>?.test?.<ff>
}
@@ -0,0 +1,61 @@
JetFile: safeQualifiedExpressionWithoutSelector.kt
PACKAGE_DIRECTIVE
<empty list>
FUN
PsiElement(fun)('fun')
PsiWhiteSpace(' ')
PsiElement(IDENTIFIER)('test')
VALUE_PARAMETER_LIST
PsiElement(LPAR)('(')
PsiElement(RPAR)(')')
PsiWhiteSpace(' ')
BLOCK
PsiElement(LBRACE)('{')
PsiWhiteSpace('\n ')
BINARY_EXPRESSION
BINARY_EXPRESSION
DOT_QUALIFIED_EXPRESSION
REFERENCE_EXPRESSION
PsiElement(IDENTIFIER)('MyClass')
PsiElement(DOT)('.')
PsiErrorElement:Expecting an element
PsiElement(LT)('<')
OPERATION_REFERENCE
PsiElement(IDENTIFIER)('warning')
PsiWhiteSpace(' ')
REFERENCE_EXPRESSION
PsiElement(IDENTIFIER)('descr')
OPERATION_REFERENCE
PsiElement(EQ)('=')
BINARY_EXPRESSION
BINARY_EXPRESSION
STRING_TEMPLATE
PsiElement(OPEN_QUOTE)('"')
PsiElement(CLOSING_QUOTE)('"')
OPERATION_REFERENCE
PsiElement(GT)('>')
REFERENCE_EXPRESSION
PsiElement(IDENTIFIER)('Companion')
OPERATION_REFERENCE
PsiElement(LT)('<')
BINARY_EXPRESSION
BINARY_EXPRESSION
PsiErrorElement:Expecting an element
PsiElement(DIV)('/')
OPERATION_REFERENCE
PsiElement(IDENTIFIER)('warning')
PsiErrorElement:Expecting an element
PsiElement(GT)('>')
PsiElement(SAFE_ACCESS)('?.')
SAFE_ACCESS_EXPRESSION
REFERENCE_EXPRESSION
PsiElement(IDENTIFIER)('test')
PsiElement(SAFE_ACCESS)('?.')
PsiErrorElement:Expecting an element
PsiElement(LT)('<')
OPERATION_REFERENCE
PsiElement(IDENTIFIER)('ff')
PsiErrorElement:Expecting an element
PsiElement(GT)('>')
PsiWhiteSpace('\n')
PsiElement(RBRACE)('}')