diff --git a/compiler/fir/fir2ir/tests-gen/org/jetbrains/kotlin/test/runners/codegen/FirBlackBoxCodegenTestGenerated.java b/compiler/fir/fir2ir/tests-gen/org/jetbrains/kotlin/test/runners/codegen/FirBlackBoxCodegenTestGenerated.java index f47644f9bf1..b5df1c9061e 100644 --- a/compiler/fir/fir2ir/tests-gen/org/jetbrains/kotlin/test/runners/codegen/FirBlackBoxCodegenTestGenerated.java +++ b/compiler/fir/fir2ir/tests-gen/org/jetbrains/kotlin/test/runners/codegen/FirBlackBoxCodegenTestGenerated.java @@ -2410,6 +2410,12 @@ public class FirBlackBoxCodegenTestGenerated extends AbstractFirBlackBoxCodegenT KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/codegen/box/callableReference"), Pattern.compile("^(.+)\\.kt$"), null, TargetBackend.JVM_IR, true); } + @Test + @TestMetadata("arrayConstructorArgument.kt") + public void testArrayConstructorArgument() throws Exception { + runTest("compiler/testData/codegen/box/callableReference/arrayConstructorArgument.kt"); + } + @Test @TestMetadata("builtinFunctionReferenceOwner.kt") public void testBuiltinFunctionReferenceOwner() throws Exception { diff --git a/compiler/testData/codegen/box/callableReference/arrayConstructorArgument.kt b/compiler/testData/codegen/box/callableReference/arrayConstructorArgument.kt new file mode 100644 index 00000000000..975187924e7 --- /dev/null +++ b/compiler/testData/codegen/box/callableReference/arrayConstructorArgument.kt @@ -0,0 +1,10 @@ +// WITH_RUNTIME +// DONT_TARGET_EXACT_BACKEND: WASM +// WASM_MUTE_REASON: PROPERTY_REFERENCES +fun foo(it: Int) = "O"[it] + +val Int.foo: Char + get() = "K"[this] + +fun box(): String = + CharArray(1, ::foo)[0].toString() + CharArray(1, Int::foo)[0].toString() diff --git a/compiler/testData/codegen/box/callableReference/bound/arrayConstructorArgument.kt b/compiler/testData/codegen/box/callableReference/bound/arrayConstructorArgument.kt index 02953c875bb..14a744bb7de 100644 --- a/compiler/testData/codegen/box/callableReference/bound/arrayConstructorArgument.kt +++ b/compiler/testData/codegen/box/callableReference/bound/arrayConstructorArgument.kt @@ -1,5 +1,6 @@ // WITH_RUNTIME - +// DONT_TARGET_EXACT_BACKEND: WASM +// WASM_MUTE_REASON: BINDING_RECEIVERS class C(val x: String) { fun foo(i: Int): Char = x[i] } diff --git a/compiler/testData/codegen/bytecodeListing/callableReferenceArrayConstructorArguments.kt b/compiler/testData/codegen/bytecodeListing/callableReferenceArrayConstructorArguments.kt new file mode 100644 index 00000000000..aa01dbecac0 --- /dev/null +++ b/compiler/testData/codegen/bytecodeListing/callableReferenceArrayConstructorArguments.kt @@ -0,0 +1,16 @@ +// WITH_RUNTIME + +fun foo1(x: Int) = x +fun foo2(vararg x: Int) = x[0] +fun Int.foo3() = this +fun IntArray.foo4(x: Int) = this[x] +val Int.foo5 get() = this + +fun test() { + // None of this should create any Function1 implementations because IntArray is inline. + IntArray(1, ::foo1) + IntArray(1, ::foo2) + IntArray(1, Int::foo3) + IntArray(1, intArrayOf(0)::foo4) + IntArray(1, Int::foo5) +} diff --git a/compiler/testData/codegen/bytecodeListing/callableReferenceArrayConstructorArguments.txt b/compiler/testData/codegen/bytecodeListing/callableReferenceArrayConstructorArguments.txt new file mode 100644 index 00000000000..7299c40e098 --- /dev/null +++ b/compiler/testData/codegen/bytecodeListing/callableReferenceArrayConstructorArguments.txt @@ -0,0 +1,10 @@ +@kotlin.Metadata +public final class CallableReferenceArrayConstructorArgumentsKt { + // source: 'callableReferenceArrayConstructorArguments.kt' + public final static method foo1(p0: int): int + public varargs final static method foo2(@org.jetbrains.annotations.NotNull p0: int[]): int + public final static method foo3(p0: int): int + public final static method foo4(@org.jetbrains.annotations.NotNull p0: int[], p1: int): int + public final static method getFoo5(p0: int): int + public final static method test(): void +} diff --git a/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/codegen/BlackBoxCodegenTestGenerated.java b/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/codegen/BlackBoxCodegenTestGenerated.java index 1bb9503aa03..097b4e85757 100644 --- a/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/codegen/BlackBoxCodegenTestGenerated.java +++ b/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/codegen/BlackBoxCodegenTestGenerated.java @@ -2410,6 +2410,12 @@ public class BlackBoxCodegenTestGenerated extends AbstractBlackBoxCodegenTest { KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/codegen/box/callableReference"), Pattern.compile("^(.+)\\.kt$"), null, TargetBackend.JVM, true); } + @Test + @TestMetadata("arrayConstructorArgument.kt") + public void testArrayConstructorArgument() throws Exception { + runTest("compiler/testData/codegen/box/callableReference/arrayConstructorArgument.kt"); + } + @Test @TestMetadata("builtinFunctionReferenceOwner.kt") public void testBuiltinFunctionReferenceOwner() throws Exception { diff --git a/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/codegen/BytecodeListingTestGenerated.java b/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/codegen/BytecodeListingTestGenerated.java index 85c45654fd1..a822d62292a 100644 --- a/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/codegen/BytecodeListingTestGenerated.java +++ b/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/codegen/BytecodeListingTestGenerated.java @@ -61,6 +61,12 @@ public class BytecodeListingTestGenerated extends AbstractBytecodeListingTest { runTest("compiler/testData/codegen/bytecodeListing/callableNameIntrinsic.kt"); } + @Test + @TestMetadata("callableReferenceArrayConstructorArguments.kt") + public void testCallableReferenceArrayConstructorArguments() throws Exception { + runTest("compiler/testData/codegen/bytecodeListing/callableReferenceArrayConstructorArguments.kt"); + } + @Test @TestMetadata("cloneable.kt") public void testCloneable() throws Exception { diff --git a/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/codegen/IrBlackBoxCodegenTestGenerated.java b/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/codegen/IrBlackBoxCodegenTestGenerated.java index dc384e6bd8e..e9aaadd31ea 100644 --- a/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/codegen/IrBlackBoxCodegenTestGenerated.java +++ b/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/codegen/IrBlackBoxCodegenTestGenerated.java @@ -2410,6 +2410,12 @@ public class IrBlackBoxCodegenTestGenerated extends AbstractIrBlackBoxCodegenTes KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/codegen/box/callableReference"), Pattern.compile("^(.+)\\.kt$"), null, TargetBackend.JVM_IR, true); } + @Test + @TestMetadata("arrayConstructorArgument.kt") + public void testArrayConstructorArgument() throws Exception { + runTest("compiler/testData/codegen/box/callableReference/arrayConstructorArgument.kt"); + } + @Test @TestMetadata("builtinFunctionReferenceOwner.kt") public void testBuiltinFunctionReferenceOwner() throws Exception { diff --git a/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/codegen/IrBytecodeListingTestGenerated.java b/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/codegen/IrBytecodeListingTestGenerated.java index 9c20466bc01..94397da4f78 100644 --- a/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/codegen/IrBytecodeListingTestGenerated.java +++ b/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/codegen/IrBytecodeListingTestGenerated.java @@ -61,6 +61,12 @@ public class IrBytecodeListingTestGenerated extends AbstractIrBytecodeListingTes runTest("compiler/testData/codegen/bytecodeListing/callableNameIntrinsic.kt"); } + @Test + @TestMetadata("callableReferenceArrayConstructorArguments.kt") + public void testCallableReferenceArrayConstructorArguments() throws Exception { + runTest("compiler/testData/codegen/bytecodeListing/callableReferenceArrayConstructorArguments.kt"); + } + @Test @TestMetadata("cloneable.kt") public void testCloneable() throws Exception { diff --git a/compiler/tests-gen/org/jetbrains/kotlin/codegen/LightAnalysisModeTestGenerated.java b/compiler/tests-gen/org/jetbrains/kotlin/codegen/LightAnalysisModeTestGenerated.java index eafd85e231f..7bc3ee5e9e9 100644 --- a/compiler/tests-gen/org/jetbrains/kotlin/codegen/LightAnalysisModeTestGenerated.java +++ b/compiler/tests-gen/org/jetbrains/kotlin/codegen/LightAnalysisModeTestGenerated.java @@ -2140,6 +2140,11 @@ public class LightAnalysisModeTestGenerated extends AbstractLightAnalysisModeTes KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/codegen/box/callableReference"), Pattern.compile("^(.+)\\.kt$"), null, TargetBackend.JVM, true); } + @TestMetadata("arrayConstructorArgument.kt") + public void testArrayConstructorArgument() throws Exception { + runTest("compiler/testData/codegen/box/callableReference/arrayConstructorArgument.kt"); + } + @TestMetadata("builtinFunctionReferenceOwner.kt") public void testBuiltinFunctionReferenceOwner() throws Exception { runTest("compiler/testData/codegen/box/callableReference/builtinFunctionReferenceOwner.kt"); diff --git a/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/es6/semantics/IrJsCodegenBoxES6TestGenerated.java b/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/es6/semantics/IrJsCodegenBoxES6TestGenerated.java index 356b5ccabf1..5f551d50e78 100644 --- a/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/es6/semantics/IrJsCodegenBoxES6TestGenerated.java +++ b/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/es6/semantics/IrJsCodegenBoxES6TestGenerated.java @@ -1455,6 +1455,11 @@ public class IrJsCodegenBoxES6TestGenerated extends AbstractIrJsCodegenBoxES6Tes KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/codegen/box/callableReference"), Pattern.compile("^(.+)\\.kt$"), null, TargetBackend.JS_IR_ES6, true); } + @TestMetadata("arrayConstructorArgument.kt") + public void testArrayConstructorArgument() throws Exception { + runTest("compiler/testData/codegen/box/callableReference/arrayConstructorArgument.kt"); + } + @TestMetadata("genericConstructorReference.kt") public void testGenericConstructorReference() throws Exception { runTest("compiler/testData/codegen/box/callableReference/genericConstructorReference.kt"); diff --git a/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/ir/semantics/IrJsCodegenBoxTestGenerated.java b/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/ir/semantics/IrJsCodegenBoxTestGenerated.java index 087ae075f6c..a1b34209e59 100644 --- a/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/ir/semantics/IrJsCodegenBoxTestGenerated.java +++ b/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/ir/semantics/IrJsCodegenBoxTestGenerated.java @@ -1455,6 +1455,11 @@ public class IrJsCodegenBoxTestGenerated extends AbstractIrJsCodegenBoxTest { KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/codegen/box/callableReference"), Pattern.compile("^(.+)\\.kt$"), null, TargetBackend.JS_IR, true); } + @TestMetadata("arrayConstructorArgument.kt") + public void testArrayConstructorArgument() throws Exception { + runTest("compiler/testData/codegen/box/callableReference/arrayConstructorArgument.kt"); + } + @TestMetadata("genericConstructorReference.kt") public void testGenericConstructorReference() throws Exception { runTest("compiler/testData/codegen/box/callableReference/genericConstructorReference.kt"); diff --git a/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/semantics/JsCodegenBoxTestGenerated.java b/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/semantics/JsCodegenBoxTestGenerated.java index be7f6ea0395..ae445efa494 100644 --- a/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/semantics/JsCodegenBoxTestGenerated.java +++ b/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/semantics/JsCodegenBoxTestGenerated.java @@ -1455,6 +1455,11 @@ public class JsCodegenBoxTestGenerated extends AbstractJsCodegenBoxTest { KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/codegen/box/callableReference"), Pattern.compile("^(.+)\\.kt$"), null, TargetBackend.JS, true); } + @TestMetadata("arrayConstructorArgument.kt") + public void testArrayConstructorArgument() throws Exception { + runTest("compiler/testData/codegen/box/callableReference/arrayConstructorArgument.kt"); + } + @TestMetadata("genericConstructorReference.kt") public void testGenericConstructorReference() throws Exception { runTest("compiler/testData/codegen/box/callableReference/genericConstructorReference.kt"); diff --git a/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/wasm/semantics/IrCodegenBoxWasmTestGenerated.java b/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/wasm/semantics/IrCodegenBoxWasmTestGenerated.java index 775d425e1dc..8e54f3f33d9 100644 --- a/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/wasm/semantics/IrCodegenBoxWasmTestGenerated.java +++ b/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/wasm/semantics/IrCodegenBoxWasmTestGenerated.java @@ -1363,11 +1363,6 @@ public class IrCodegenBoxWasmTestGenerated extends AbstractIrCodegenBoxWasmTest KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/codegen/box/callableReference/bound"), Pattern.compile("^([^_](.+))\\.kt$"), null, TargetBackend.WASM, true); } - @TestMetadata("arrayConstructorArgument.kt") - public void testArrayConstructorArgument() throws Exception { - runTest("compiler/testData/codegen/box/callableReference/bound/arrayConstructorArgument.kt"); - } - @TestMetadata("captureVarInInitBlock.kt") public void testCaptureVarInInitBlock() throws Exception { runTest("compiler/testData/codegen/box/callableReference/bound/captureVarInInitBlock.kt");