psi2ir: support dynamic infix calls ('foo bar 42' is 'foo.bar(42)')

This commit is contained in:
Dmitry Petrov
2019-02-13 16:08:03 +03:00
parent 740d5ec468
commit 6aff53204f
6 changed files with 36 additions and 8 deletions
@@ -0,0 +1,3 @@
fun test1(d: dynamic) = d foo 123
fun test2(d: dynamic) = d invoke 123
@@ -0,0 +1,17 @@
FILE fqName:<root> fileName:/dynamicInfixCall.kt
FUN name:test1 visibility:public modality:FINAL <> (d:dynamic) returnType:dynamic flags:
VALUE_PARAMETER name:d index:0 type:dynamic flags:
BLOCK_BODY
RETURN type=kotlin.Nothing from='test1(dynamic): dynamic'
DYN_OP operator=INVOKE type=dynamic
receiver: DYN_MEMBER memberName='foo' type=dynamic
GET_VAR 'value-parameter d: dynamic' type=dynamic origin=null
0: CONST Int type=kotlin.Int value=123
FUN name:test2 visibility:public modality:FINAL <> (d:dynamic) returnType:dynamic flags:
VALUE_PARAMETER name:d index:0 type:dynamic flags:
BLOCK_BODY
RETURN type=kotlin.Nothing from='test2(dynamic): dynamic'
DYN_OP operator=INVOKE type=dynamic
receiver: DYN_MEMBER memberName='invoke' type=dynamic
GET_VAR 'value-parameter d: dynamic' type=dynamic origin=null
0: CONST Int type=kotlin.Int value=123