Parsing dynamic in extension receiver position

This commit is contained in:
Andrey Breslav
2014-11-14 18:59:14 +03:00
parent 4f3158abb3
commit f58b30706e
11 changed files with 239 additions and 6 deletions
@@ -1,7 +1,7 @@
// MODULE[js]: m1
// FILE: k.kt
fun (dynamic).test() {
fun dynamic.test() {
val v1 = foo()
v1.isDynamic() // to check that anything is resolvable
+16
View File
@@ -0,0 +1,16 @@
fun dynamic.foo()
fun dynamic?.foo()
val dynamic.foo: Int
val dynamic?.foo: Int
val foo: dynamic.() -> Unit
// testing look-ahead with comments and whitespace
fun dynamic . foo()
fun dynamic
.foo()
fun dynamic// line-comment
.foo()
fun dynamic/*
*/.foo()
+140
View File
@@ -0,0 +1,140 @@
JetFile: DynamicReceiver.kt
PACKAGE_DIRECTIVE
<empty list>
FUN
PsiElement(fun)('fun')
PsiWhiteSpace(' ')
TYPE_REFERENCE
DYNAMIC_TYPE
PsiElement(dynamic)('dynamic')
PsiElement(DOT)('.')
PsiElement(IDENTIFIER)('foo')
VALUE_PARAMETER_LIST
PsiElement(LPAR)('(')
PsiElement(RPAR)(')')
PsiWhiteSpace('\n')
FUN
PsiElement(fun)('fun')
PsiWhiteSpace(' ')
TYPE_REFERENCE
NULLABLE_TYPE
DYNAMIC_TYPE
PsiElement(dynamic)('dynamic')
PsiElement(QUEST)('?')
PsiElement(DOT)('.')
PsiElement(IDENTIFIER)('foo')
VALUE_PARAMETER_LIST
PsiElement(LPAR)('(')
PsiElement(RPAR)(')')
PsiWhiteSpace('\n')
PROPERTY
PsiElement(val)('val')
PsiWhiteSpace(' ')
TYPE_REFERENCE
DYNAMIC_TYPE
PsiElement(dynamic)('dynamic')
PsiElement(DOT)('.')
PsiElement(IDENTIFIER)('foo')
PsiElement(COLON)(':')
PsiWhiteSpace(' ')
TYPE_REFERENCE
USER_TYPE
REFERENCE_EXPRESSION
PsiElement(IDENTIFIER)('Int')
PsiWhiteSpace('\n')
PROPERTY
PsiElement(val)('val')
PsiWhiteSpace(' ')
TYPE_REFERENCE
NULLABLE_TYPE
DYNAMIC_TYPE
PsiElement(dynamic)('dynamic')
PsiElement(QUEST)('?')
PsiElement(DOT)('.')
PsiElement(IDENTIFIER)('foo')
PsiElement(COLON)(':')
PsiWhiteSpace(' ')
TYPE_REFERENCE
USER_TYPE
REFERENCE_EXPRESSION
PsiElement(IDENTIFIER)('Int')
PsiWhiteSpace('\n\n')
PROPERTY
PsiElement(val)('val')
PsiWhiteSpace(' ')
PsiElement(IDENTIFIER)('foo')
PsiElement(COLON)(':')
PsiWhiteSpace(' ')
TYPE_REFERENCE
FUNCTION_TYPE
FUNCTION_TYPE_RECEIVER
TYPE_REFERENCE
DYNAMIC_TYPE
PsiElement(dynamic)('dynamic')
PsiElement(DOT)('.')
VALUE_PARAMETER_LIST
PsiElement(LPAR)('(')
PsiElement(RPAR)(')')
PsiWhiteSpace(' ')
PsiElement(ARROW)('->')
PsiWhiteSpace(' ')
TYPE_REFERENCE
USER_TYPE
REFERENCE_EXPRESSION
PsiElement(IDENTIFIER)('Unit')
PsiWhiteSpace('\n\n')
PsiComment(EOL_COMMENT)('// testing look-ahead with comments and whitespace')
PsiWhiteSpace('\n\n')
FUN
PsiElement(fun)('fun')
PsiWhiteSpace(' ')
TYPE_REFERENCE
DYNAMIC_TYPE
PsiElement(dynamic)('dynamic')
PsiWhiteSpace(' ')
PsiElement(DOT)('.')
PsiWhiteSpace(' ')
PsiElement(IDENTIFIER)('foo')
VALUE_PARAMETER_LIST
PsiElement(LPAR)('(')
PsiElement(RPAR)(')')
PsiWhiteSpace('\n')
FUN
PsiElement(fun)('fun')
PsiWhiteSpace(' ')
TYPE_REFERENCE
DYNAMIC_TYPE
PsiElement(dynamic)('dynamic')
PsiWhiteSpace('\n ')
PsiElement(DOT)('.')
PsiElement(IDENTIFIER)('foo')
VALUE_PARAMETER_LIST
PsiElement(LPAR)('(')
PsiElement(RPAR)(')')
PsiWhiteSpace('\n')
FUN
PsiElement(fun)('fun')
PsiWhiteSpace(' ')
TYPE_REFERENCE
DYNAMIC_TYPE
PsiElement(dynamic)('dynamic')
PsiComment(EOL_COMMENT)('// line-comment')
PsiWhiteSpace('\n ')
PsiElement(DOT)('.')
PsiElement(IDENTIFIER)('foo')
VALUE_PARAMETER_LIST
PsiElement(LPAR)('(')
PsiElement(RPAR)(')')
PsiWhiteSpace('\n')
FUN
PsiElement(fun)('fun')
PsiWhiteSpace(' ')
TYPE_REFERENCE
DYNAMIC_TYPE
PsiElement(dynamic)('dynamic')
PsiComment(BLOCK_COMMENT)('/*\n*/')
PsiElement(DOT)('.')
PsiElement(IDENTIFIER)('foo')
VALUE_PARAMETER_LIST
PsiElement(LPAR)('(')
PsiElement(RPAR)(')')