psi2ir: add test for SAM-conversion of operator arguments

This commit is contained in:
pyos
2019-03-27 10:00:01 +01:00
committed by max-kammerer
parent 39c8939241
commit f47d9d54c0
3 changed files with 77 additions and 0 deletions
@@ -0,0 +1,28 @@
// WITH_JDK
// FILE: samOperators.kt
fun f() {}
fun J.test1() {
this[::f]
this[::f, ::f]
}
fun J.test2() {
this[::f] = ::f
this[::f, ::f] = ::f
}
fun J.test3() {
this += ::f
this -= ::f
}
// FILE: J.java
public class J {
public void get(Runnable k) {}
public void get(Runnable k, Runnable m) {}
public void set(Runnable k, Runnable v) {}
public void set(Runnable k, Runnable m, Runnable v) {}
public void plusAssign(Runnable i) {}
public void minusAssign(Runnable i) {}
}
@@ -0,0 +1,44 @@
FILE fqName:<root> fileName:/samOperators.kt
FUN name:f visibility:public modality:FINAL <> () returnType:kotlin.Unit
BLOCK_BODY
FUN name:test1 visibility:public modality:FINAL <> ($receiver:<root>.J) returnType:kotlin.Unit
$receiver: VALUE_PARAMETER name:<this> type:<root>.J
BLOCK_BODY
CALL 'public open fun get (k: java.lang.Runnable?): kotlin.Unit declared in <root>.J' type=kotlin.Unit origin=GET_ARRAY_ELEMENT
$this: GET_VAR '<this>: <root>.J declared in <root>.test1' type=<root>.J origin=null
k: TYPE_OP type=java.lang.Runnable? origin=SAM_CONVERSION typeOperand=java.lang.Runnable?
FUNCTION_REFERENCE 'public final fun f (): kotlin.Unit declared in <root>' type=kotlin.reflect.KFunction0<kotlin.Unit> origin=null
CALL 'public open fun get (k: java.lang.Runnable?, m: java.lang.Runnable?): kotlin.Unit declared in <root>.J' type=kotlin.Unit origin=GET_ARRAY_ELEMENT
$this: GET_VAR '<this>: <root>.J declared in <root>.test1' type=<root>.J origin=null
k: TYPE_OP type=java.lang.Runnable? origin=SAM_CONVERSION typeOperand=java.lang.Runnable?
FUNCTION_REFERENCE 'public final fun f (): kotlin.Unit declared in <root>' type=kotlin.reflect.KFunction0<kotlin.Unit> origin=null
m: TYPE_OP type=java.lang.Runnable? origin=SAM_CONVERSION typeOperand=java.lang.Runnable?
FUNCTION_REFERENCE 'public final fun f (): kotlin.Unit declared in <root>' type=kotlin.reflect.KFunction0<kotlin.Unit> origin=null
FUN name:test2 visibility:public modality:FINAL <> ($receiver:<root>.J) returnType:kotlin.Unit
$receiver: VALUE_PARAMETER name:<this> type:<root>.J
BLOCK_BODY
CALL 'public open fun set (k: java.lang.Runnable?, v: java.lang.Runnable?): kotlin.Unit declared in <root>.J' type=kotlin.Unit origin=EQ
$this: GET_VAR '<this>: <root>.J declared in <root>.test2' type=<root>.J origin=null
k: TYPE_OP type=java.lang.Runnable? origin=SAM_CONVERSION typeOperand=java.lang.Runnable?
FUNCTION_REFERENCE 'public final fun f (): kotlin.Unit declared in <root>' type=kotlin.reflect.KFunction0<kotlin.Unit> origin=null
v: TYPE_OP type=java.lang.Runnable? origin=SAM_CONVERSION typeOperand=java.lang.Runnable?
FUNCTION_REFERENCE 'public final fun f (): kotlin.Unit declared in <root>' type=kotlin.reflect.KFunction0<kotlin.Unit> origin=null
CALL 'public open fun set (k: java.lang.Runnable?, m: java.lang.Runnable?, v: java.lang.Runnable?): kotlin.Unit declared in <root>.J' type=kotlin.Unit origin=EQ
$this: GET_VAR '<this>: <root>.J declared in <root>.test2' type=<root>.J origin=null
k: TYPE_OP type=java.lang.Runnable? origin=SAM_CONVERSION typeOperand=java.lang.Runnable?
FUNCTION_REFERENCE 'public final fun f (): kotlin.Unit declared in <root>' type=kotlin.reflect.KFunction0<kotlin.Unit> origin=null
m: TYPE_OP type=java.lang.Runnable? origin=SAM_CONVERSION typeOperand=java.lang.Runnable?
FUNCTION_REFERENCE 'public final fun f (): kotlin.Unit declared in <root>' type=kotlin.reflect.KFunction0<kotlin.Unit> origin=null
v: TYPE_OP type=java.lang.Runnable? origin=SAM_CONVERSION typeOperand=java.lang.Runnable?
FUNCTION_REFERENCE 'public final fun f (): kotlin.Unit declared in <root>' type=kotlin.reflect.KFunction0<kotlin.Unit> origin=null
FUN name:test3 visibility:public modality:FINAL <> ($receiver:<root>.J) returnType:kotlin.Unit
$receiver: VALUE_PARAMETER name:<this> type:<root>.J
BLOCK_BODY
CALL 'public open fun plusAssign (i: java.lang.Runnable?): kotlin.Unit declared in <root>.J' type=kotlin.Unit origin=PLUSEQ
$this: GET_VAR '<this>: <root>.J declared in <root>.test3' type=<root>.J origin=PLUSEQ
i: TYPE_OP type=java.lang.Runnable? origin=SAM_CONVERSION typeOperand=java.lang.Runnable?
FUNCTION_REFERENCE 'public final fun f (): kotlin.Unit declared in <root>' type=kotlin.reflect.KFunction0<kotlin.Unit> origin=null
CALL 'public open fun minusAssign (i: java.lang.Runnable?): kotlin.Unit declared in <root>.J' type=kotlin.Unit origin=MINUSEQ
$this: GET_VAR '<this>: <root>.J declared in <root>.test3' type=<root>.J origin=MINUSEQ
i: TYPE_OP type=java.lang.Runnable? origin=SAM_CONVERSION typeOperand=java.lang.Runnable?
FUNCTION_REFERENCE 'public final fun f (): kotlin.Unit declared in <root>' type=kotlin.reflect.KFunction0<kotlin.Unit> origin=null
@@ -1356,6 +1356,11 @@ public class IrTextTestCaseGenerated extends AbstractIrTextTestCase {
public void testSamConversionsWithSmartCasts() throws Exception {
runTest("compiler/testData/ir/irText/expressions/sam/samConversionsWithSmartCasts.kt");
}
@TestMetadata("samOperators.kt")
public void testSamOperators() throws Exception {
runTest("compiler/testData/ir/irText/expressions/sam/samOperators.kt");
}
}
}