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");