diff --git a/compiler/testData/ir/irText/expressions/sam/samOperators.kt b/compiler/testData/ir/irText/expressions/sam/samOperators.kt new file mode 100644 index 00000000000..12b1858c16a --- /dev/null +++ b/compiler/testData/ir/irText/expressions/sam/samOperators.kt @@ -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) {} +} diff --git a/compiler/testData/ir/irText/expressions/sam/samOperators.txt b/compiler/testData/ir/irText/expressions/sam/samOperators.txt new file mode 100644 index 00000000000..e85931b4eb0 --- /dev/null +++ b/compiler/testData/ir/irText/expressions/sam/samOperators.txt @@ -0,0 +1,44 @@ +FILE fqName: fileName:/samOperators.kt + FUN name:f visibility:public modality:FINAL <> () returnType:kotlin.Unit + BLOCK_BODY + FUN name:test1 visibility:public modality:FINAL <> ($receiver:.J) returnType:kotlin.Unit + $receiver: VALUE_PARAMETER name: type:.J + BLOCK_BODY + CALL 'public open fun get (k: java.lang.Runnable?): kotlin.Unit declared in .J' type=kotlin.Unit origin=GET_ARRAY_ELEMENT + $this: GET_VAR ': .J declared in .test1' type=.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 ' type=kotlin.reflect.KFunction0 origin=null + CALL 'public open fun get (k: java.lang.Runnable?, m: java.lang.Runnable?): kotlin.Unit declared in .J' type=kotlin.Unit origin=GET_ARRAY_ELEMENT + $this: GET_VAR ': .J declared in .test1' type=.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 ' type=kotlin.reflect.KFunction0 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 ' type=kotlin.reflect.KFunction0 origin=null + FUN name:test2 visibility:public modality:FINAL <> ($receiver:.J) returnType:kotlin.Unit + $receiver: VALUE_PARAMETER name: type:.J + BLOCK_BODY + CALL 'public open fun set (k: java.lang.Runnable?, v: java.lang.Runnable?): kotlin.Unit declared in .J' type=kotlin.Unit origin=EQ + $this: GET_VAR ': .J declared in .test2' type=.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 ' type=kotlin.reflect.KFunction0 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 ' type=kotlin.reflect.KFunction0 origin=null + CALL 'public open fun set (k: java.lang.Runnable?, m: java.lang.Runnable?, v: java.lang.Runnable?): kotlin.Unit declared in .J' type=kotlin.Unit origin=EQ + $this: GET_VAR ': .J declared in .test2' type=.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 ' type=kotlin.reflect.KFunction0 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 ' type=kotlin.reflect.KFunction0 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 ' type=kotlin.reflect.KFunction0 origin=null + FUN name:test3 visibility:public modality:FINAL <> ($receiver:.J) returnType:kotlin.Unit + $receiver: VALUE_PARAMETER name: type:.J + BLOCK_BODY + CALL 'public open fun plusAssign (i: java.lang.Runnable?): kotlin.Unit declared in .J' type=kotlin.Unit origin=PLUSEQ + $this: GET_VAR ': .J declared in .test3' type=.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 ' type=kotlin.reflect.KFunction0 origin=null + CALL 'public open fun minusAssign (i: java.lang.Runnable?): kotlin.Unit declared in .J' type=kotlin.Unit origin=MINUSEQ + $this: GET_VAR ': .J declared in .test3' type=.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 ' type=kotlin.reflect.KFunction0 origin=null diff --git a/compiler/tests/org/jetbrains/kotlin/ir/IrTextTestCaseGenerated.java b/compiler/tests/org/jetbrains/kotlin/ir/IrTextTestCaseGenerated.java index d0b178c58cc..3ccad277a7e 100644 --- a/compiler/tests/org/jetbrains/kotlin/ir/IrTextTestCaseGenerated.java +++ b/compiler/tests/org/jetbrains/kotlin/ir/IrTextTestCaseGenerated.java @@ -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"); + } } }