Parse expressions like '1._foo()' after dot as references

This commit is contained in:
Mikhail Zarechenskiy
2016-11-17 17:59:36 +03:00
parent c7c6a1998b
commit 4b23c50bf8
9 changed files with 145 additions and 7 deletions
@@ -8,8 +8,6 @@ fun foo() {
<!ILLEGAL_UNDERSCORE!>0B_1<!>
<!ILLEGAL_UNDERSCORE!>1.0_<!>
<!ILLEGAL_UNDERSCORE!>1_.1<!>
<!ILLEGAL_UNDERSCORE!>1._1<!>
<!ILLEGAL_UNDERSCORE!>1_._1<!>
<!ILLEGAL_UNDERSCORE!>1.0_e1<!>
<!ILLEGAL_UNDERSCORE!>1.0E_1<!>
<!ILLEGAL_UNDERSCORE!>0Xe_<!>
@@ -4,7 +4,6 @@
fun foo() {
<!UNSUPPORTED_FEATURE!>100_1<!>
<!UNSUPPORTED_FEATURE!>3_.1<!>
<!UNSUPPORTED_FEATURE!>3_._1<!>
<!UNSUPPORTED_FEATURE!>2___4<!>
<!UNSUPPORTED_FEATURE!>123_<!>
}
+5
View File
@@ -32,4 +32,9 @@ fun foo() {
v(fred<a, *, b>(a))
w(plugh<a, "", b>(a))
xyzzy<*>()
1._foo()
1.__foo()
1_1._foo()
1._1foo()
1._1_foo()
}
+56 -1
View File
@@ -495,5 +495,60 @@ JetFile: FunctionCalls.kt
VALUE_ARGUMENT_LIST
PsiElement(LPAR)('(')
PsiElement(RPAR)(')')
PsiWhiteSpace('\n ')
DOT_QUALIFIED_EXPRESSION
INTEGER_CONSTANT
PsiElement(INTEGER_LITERAL)('1')
PsiElement(DOT)('.')
CALL_EXPRESSION
REFERENCE_EXPRESSION
PsiElement(IDENTIFIER)('_foo')
VALUE_ARGUMENT_LIST
PsiElement(LPAR)('(')
PsiElement(RPAR)(')')
PsiWhiteSpace('\n ')
DOT_QUALIFIED_EXPRESSION
INTEGER_CONSTANT
PsiElement(INTEGER_LITERAL)('1')
PsiElement(DOT)('.')
CALL_EXPRESSION
REFERENCE_EXPRESSION
PsiElement(IDENTIFIER)('__foo')
VALUE_ARGUMENT_LIST
PsiElement(LPAR)('(')
PsiElement(RPAR)(')')
PsiWhiteSpace('\n ')
DOT_QUALIFIED_EXPRESSION
INTEGER_CONSTANT
PsiElement(INTEGER_LITERAL)('1_1')
PsiElement(DOT)('.')
CALL_EXPRESSION
REFERENCE_EXPRESSION
PsiElement(IDENTIFIER)('_foo')
VALUE_ARGUMENT_LIST
PsiElement(LPAR)('(')
PsiElement(RPAR)(')')
PsiWhiteSpace('\n ')
DOT_QUALIFIED_EXPRESSION
INTEGER_CONSTANT
PsiElement(INTEGER_LITERAL)('1')
PsiElement(DOT)('.')
CALL_EXPRESSION
REFERENCE_EXPRESSION
PsiElement(IDENTIFIER)('_1foo')
VALUE_ARGUMENT_LIST
PsiElement(LPAR)('(')
PsiElement(RPAR)(')')
PsiWhiteSpace('\n ')
DOT_QUALIFIED_EXPRESSION
INTEGER_CONSTANT
PsiElement(INTEGER_LITERAL)('1')
PsiElement(DOT)('.')
CALL_EXPRESSION
REFERENCE_EXPRESSION
PsiElement(IDENTIFIER)('_1_foo')
VALUE_ARGUMENT_LIST
PsiElement(LPAR)('(')
PsiElement(RPAR)(')')
PsiWhiteSpace('\n')
PsiElement(RBRACE)('}')
PsiElement(RBRACE)('}')
+7
View File
@@ -0,0 +1,7 @@
fun foo() {
1._some
1.__some
1_1._some
1._1some
1._1_some
}
+52
View File
@@ -0,0 +1,52 @@
JetFile: PropertyInvokes.kt
PACKAGE_DIRECTIVE
<empty list>
IMPORT_LIST
<empty list>
FUN
PsiElement(fun)('fun')
PsiWhiteSpace(' ')
PsiElement(IDENTIFIER)('foo')
VALUE_PARAMETER_LIST
PsiElement(LPAR)('(')
PsiElement(RPAR)(')')
PsiWhiteSpace(' ')
BLOCK
PsiElement(LBRACE)('{')
PsiWhiteSpace('\n ')
DOT_QUALIFIED_EXPRESSION
INTEGER_CONSTANT
PsiElement(INTEGER_LITERAL)('1')
PsiElement(DOT)('.')
REFERENCE_EXPRESSION
PsiElement(IDENTIFIER)('_some')
PsiWhiteSpace('\n ')
DOT_QUALIFIED_EXPRESSION
INTEGER_CONSTANT
PsiElement(INTEGER_LITERAL)('1')
PsiElement(DOT)('.')
REFERENCE_EXPRESSION
PsiElement(IDENTIFIER)('__some')
PsiWhiteSpace('\n ')
DOT_QUALIFIED_EXPRESSION
INTEGER_CONSTANT
PsiElement(INTEGER_LITERAL)('1_1')
PsiElement(DOT)('.')
REFERENCE_EXPRESSION
PsiElement(IDENTIFIER)('_some')
PsiWhiteSpace('\n ')
DOT_QUALIFIED_EXPRESSION
INTEGER_CONSTANT
PsiElement(INTEGER_LITERAL)('1')
PsiElement(DOT)('.')
REFERENCE_EXPRESSION
PsiElement(IDENTIFIER)('_1some')
PsiWhiteSpace('\n ')
DOT_QUALIFIED_EXPRESSION
INTEGER_CONSTANT
PsiElement(INTEGER_LITERAL)('1')
PsiElement(DOT)('.')
REFERENCE_EXPRESSION
PsiElement(IDENTIFIER)('_1_some')
PsiWhiteSpace('\n')
PsiElement(RBRACE)('}')