KT-41670 Check for default property accessors in SAM interfaces
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 7a41000..624b1c0 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
@@ -18294,6 +18294,12 @@ } @Test + @TestMetadata("kt41670.kt") + public void testKt41670() throws Exception { + runTest("compiler/testData/codegen/box/funInterface/kt41670.kt"); + } + + @Test @TestMetadata("kt44827_funInterface.kt") public void testKt44827_funInterface() throws Exception { runTest("compiler/testData/codegen/box/funInterface/kt44827_funInterface.kt");
diff --git a/compiler/ir/backend.jvm/lower/src/org/jetbrains/kotlin/backend/jvm/lower/indy/LambdaMetafactoryArguments.kt b/compiler/ir/backend.jvm/lower/src/org/jetbrains/kotlin/backend/jvm/lower/indy/LambdaMetafactoryArguments.kt index 9b6ad40..d6505dc 100644 --- a/compiler/ir/backend.jvm/lower/src/org/jetbrains/kotlin/backend/jvm/lower/indy/LambdaMetafactoryArguments.kt +++ b/compiler/ir/backend.jvm/lower/src/org/jetbrains/kotlin/backend/jvm/lower/indy/LambdaMetafactoryArguments.kt
@@ -227,7 +227,8 @@ getAllSuperclasses().any { it.fqNameWhenAvailable == javaIoSerializableFqn } private fun IrClass.requiresDelegationToDefaultImpls(): Boolean { - for (irMemberFun in functions) { + val functionsAndAccessors = functions + properties.mapNotNull { it.getter } + properties.mapNotNull { it.setter } + for (irMemberFun in functionsAndAccessors) { if (irMemberFun.modality == Modality.ABSTRACT) continue val irImplFun =
diff --git a/compiler/testData/codegen/box/funInterface/kt41670.kt b/compiler/testData/codegen/box/funInterface/kt41670.kt new file mode 100644 index 0000000..ac7c3a3 --- /dev/null +++ b/compiler/testData/codegen/box/funInterface/kt41670.kt
@@ -0,0 +1,7 @@ +fun interface Interface { + fun foo() + + val value get() = "OK" +} + +fun box() = Interface{}.value \ No newline at end of file
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 457f35c..73a5a79 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
@@ -17646,6 +17646,12 @@ } @Test + @TestMetadata("kt41670.kt") + public void testKt41670() throws Exception { + runTest("compiler/testData/codegen/box/funInterface/kt41670.kt"); + } + + @Test @TestMetadata("kt44827_funInterface.kt") public void testKt44827_funInterface() throws Exception { runTest("compiler/testData/codegen/box/funInterface/kt44827_funInterface.kt");
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 c1f16ab..25fad21 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
@@ -18294,6 +18294,12 @@ } @Test + @TestMetadata("kt41670.kt") + public void testKt41670() throws Exception { + runTest("compiler/testData/codegen/box/funInterface/kt41670.kt"); + } + + @Test @TestMetadata("kt44827_funInterface.kt") public void testKt44827_funInterface() throws Exception { runTest("compiler/testData/codegen/box/funInterface/kt44827_funInterface.kt");
diff --git a/compiler/tests-gen/org/jetbrains/kotlin/codegen/LightAnalysisModeTestGenerated.java b/compiler/tests-gen/org/jetbrains/kotlin/codegen/LightAnalysisModeTestGenerated.java index 5a9de58..9941715 100644 --- a/compiler/tests-gen/org/jetbrains/kotlin/codegen/LightAnalysisModeTestGenerated.java +++ b/compiler/tests-gen/org/jetbrains/kotlin/codegen/LightAnalysisModeTestGenerated.java
@@ -14650,6 +14650,11 @@ runTest("compiler/testData/codegen/box/funInterface/irrelevantPrivateDeclarations.kt"); } + @TestMetadata("kt41670.kt") + public void testKt41670() throws Exception { + runTest("compiler/testData/codegen/box/funInterface/kt41670.kt"); + } + @TestMetadata("kt44827_funInterface.kt") public void testKt44827_funInterface() throws Exception { runTest("compiler/testData/codegen/box/funInterface/kt44827_funInterface.kt");
diff --git a/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/JsCodegenBoxTestGenerated.java b/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/JsCodegenBoxTestGenerated.java index 193deba..af0515e 100644 --- a/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/JsCodegenBoxTestGenerated.java +++ b/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/JsCodegenBoxTestGenerated.java
@@ -13586,6 +13586,12 @@ } @Test + @TestMetadata("kt41670.kt") + public void testKt41670() throws Exception { + runTest("compiler/testData/codegen/box/funInterface/kt41670.kt"); + } + + @Test @TestMetadata("kt45444_privateFunInterface.kt") public void testKt45444_privateFunInterface() throws Exception { runTest("compiler/testData/codegen/box/funInterface/kt45444_privateFunInterface.kt");
diff --git a/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/ir/IrJsCodegenBoxTestGenerated.java b/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/ir/IrJsCodegenBoxTestGenerated.java index e42fb70..84707e9 100644 --- a/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/ir/IrJsCodegenBoxTestGenerated.java +++ b/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/ir/IrJsCodegenBoxTestGenerated.java
@@ -13670,6 +13670,12 @@ } @Test + @TestMetadata("kt41670.kt") + public void testKt41670() throws Exception { + runTest("compiler/testData/codegen/box/funInterface/kt41670.kt"); + } + + @Test @TestMetadata("kt45444_privateFunInterface.kt") public void testKt45444_privateFunInterface() throws Exception { runTest("compiler/testData/codegen/box/funInterface/kt45444_privateFunInterface.kt");
diff --git a/js/js.tests/tests-gen/org/jetbrains/kotlin/js/testOld/wasm/semantics/IrCodegenBoxWasmTestGenerated.java b/js/js.tests/tests-gen/org/jetbrains/kotlin/js/testOld/wasm/semantics/IrCodegenBoxWasmTestGenerated.java index 8e73e4a..83beaa2 100644 --- a/js/js.tests/tests-gen/org/jetbrains/kotlin/js/testOld/wasm/semantics/IrCodegenBoxWasmTestGenerated.java +++ b/js/js.tests/tests-gen/org/jetbrains/kotlin/js/testOld/wasm/semantics/IrCodegenBoxWasmTestGenerated.java
@@ -12155,6 +12155,11 @@ runTest("compiler/testData/codegen/box/funInterface/irrelevantPrivateDeclarations.kt"); } + @TestMetadata("kt41670.kt") + public void testKt41670() throws Exception { + runTest("compiler/testData/codegen/box/funInterface/kt41670.kt"); + } + @TestMetadata("kt45444_privateFunInterface.kt") public void testKt45444_privateFunInterface() throws Exception { runTest("compiler/testData/codegen/box/funInterface/kt45444_privateFunInterface.kt");
diff --git a/native/native.tests/tests-gen/org/jetbrains/kotlin/konan/blackboxtest/NativeCodegenBoxTestGenerated.java b/native/native.tests/tests-gen/org/jetbrains/kotlin/konan/blackboxtest/NativeCodegenBoxTestGenerated.java index f327e12..4bc6ea0 100644 --- a/native/native.tests/tests-gen/org/jetbrains/kotlin/konan/blackboxtest/NativeCodegenBoxTestGenerated.java +++ b/native/native.tests/tests-gen/org/jetbrains/kotlin/konan/blackboxtest/NativeCodegenBoxTestGenerated.java
@@ -14714,6 +14714,12 @@ } @Test + @TestMetadata("kt41670.kt") + public void testKt41670() throws Exception { + runTest("compiler/testData/codegen/box/funInterface/kt41670.kt"); + } + + @Test @TestMetadata("kt45444_privateFunInterface.kt") public void testKt45444_privateFunInterface() throws Exception { runTest("compiler/testData/codegen/box/funInterface/kt45444_privateFunInterface.kt");