psi2ir: add test for SAM-conversion of operator arguments
This commit is contained in:
@@ -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");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user