From 60edf1def304a60b561fae807db8a2ae76eb3bdf Mon Sep 17 00:00:00 2001 From: Ivan Kochurkin Date: Thu, 9 Mar 2023 22:04:54 +0100 Subject: [PATCH] [K2, MPP] Support actualization of enums and annotations that have primary constructor with arguments ^KT-57241 Fixed --- .../actualizer/ExpectActualCollector.kt | 2 +- .../tests/multiplatform/enum/javaEnum.fir.kt | 34 ------------------- .../tests/multiplatform/enum/javaEnum.kt | 1 + .../multiplatform/enum/simpleEnum.fir.kt | 17 ---------- .../tests/multiplatform/enum/simpleEnum.kt | 1 + ...faultValuesInAnnotationViaTypealias.fir.kt | 4 +-- ...ctualClassWithDifferentConstructors.fir.kt | 6 ++-- 7 files changed, 8 insertions(+), 57 deletions(-) delete mode 100644 compiler/testData/diagnostics/tests/multiplatform/enum/javaEnum.fir.kt delete mode 100644 compiler/testData/diagnostics/tests/multiplatform/enum/simpleEnum.fir.kt diff --git a/compiler/ir/backend.common/src/org/jetbrains/kotlin/backend/common/actualizer/ExpectActualCollector.kt b/compiler/ir/backend.common/src/org/jetbrains/kotlin/backend/common/actualizer/ExpectActualCollector.kt index 741d26c7d0f..fa14088908e 100644 --- a/compiler/ir/backend.common/src/org/jetbrains/kotlin/backend/common/actualizer/ExpectActualCollector.kt +++ b/compiler/ir/backend.common/src/org/jetbrains/kotlin/backend/common/actualizer/ExpectActualCollector.kt @@ -171,7 +171,7 @@ private class MemberLinksCollector( declaration.getter?.symbol?.let { expectActualMap[it] = actualProperty.getter!!.symbol } declaration.setter?.symbol?.let { expectActualMap[it] = actualProperty.setter!!.symbol } } - } else if (!declaration.parent.containsOptionalExpectation()) { + } else if (!declaration.parent.containsOptionalExpectation() && !(declaration is IrConstructor && declaration.isPrimary)) { diagnosticsReporter.reportMissingActual(declaration) } } diff --git a/compiler/testData/diagnostics/tests/multiplatform/enum/javaEnum.fir.kt b/compiler/testData/diagnostics/tests/multiplatform/enum/javaEnum.fir.kt deleted file mode 100644 index 4fb63ae58e1..00000000000 --- a/compiler/testData/diagnostics/tests/multiplatform/enum/javaEnum.fir.kt +++ /dev/null @@ -1,34 +0,0 @@ -// MODULE: m1-common -// FILE: common.kt - -expect enum class Foo { - ENTRY -} - -expect enum class _TimeUnit - -// MODULE: m2-jvm()()(m1-common) -// FILE: jvm.kt - -actual typealias Foo = FooImpl - -actual typealias _TimeUnit = java.util.concurrent.TimeUnit - -// FILE: FooImpl.java - -public enum FooImpl { - ENTRY("OK") { - @Override - public String getResult() { - return value; - } - }; - - protected final String value; - - public FooImpl(String value) { - this.value = value; - } - - public abstract String getResult(); -} diff --git a/compiler/testData/diagnostics/tests/multiplatform/enum/javaEnum.kt b/compiler/testData/diagnostics/tests/multiplatform/enum/javaEnum.kt index 727c918af54..ab192066c68 100644 --- a/compiler/testData/diagnostics/tests/multiplatform/enum/javaEnum.kt +++ b/compiler/testData/diagnostics/tests/multiplatform/enum/javaEnum.kt @@ -1,3 +1,4 @@ +// FIR_IDENTICAL // MODULE: m1-common // FILE: common.kt diff --git a/compiler/testData/diagnostics/tests/multiplatform/enum/simpleEnum.fir.kt b/compiler/testData/diagnostics/tests/multiplatform/enum/simpleEnum.fir.kt deleted file mode 100644 index 97fa2a7c4d1..00000000000 --- a/compiler/testData/diagnostics/tests/multiplatform/enum/simpleEnum.fir.kt +++ /dev/null @@ -1,17 +0,0 @@ -// MODULE: m1-common -// FILE: common.kt - -expect enum class Foo { - ENTRY1, - ENTRY2, - ENTRY3; -} - -// MODULE: m2-jvm()()(m1-common) -// FILE: jvm.kt - -actual enum class Foo(val x: String) { - ENTRY1("1"), - ENTRY2("2"), - ENTRY3("3"); -} diff --git a/compiler/testData/diagnostics/tests/multiplatform/enum/simpleEnum.kt b/compiler/testData/diagnostics/tests/multiplatform/enum/simpleEnum.kt index 5261c676cf1..e465c204f82 100644 --- a/compiler/testData/diagnostics/tests/multiplatform/enum/simpleEnum.kt +++ b/compiler/testData/diagnostics/tests/multiplatform/enum/simpleEnum.kt @@ -1,3 +1,4 @@ +// FIR_IDENTICAL // MODULE: m1-common // FILE: common.kt diff --git a/compiler/testData/diagnostics/tests/multiplatform/headerClass/actualClassWithDefaultValuesInAnnotationViaTypealias.fir.kt b/compiler/testData/diagnostics/tests/multiplatform/headerClass/actualClassWithDefaultValuesInAnnotationViaTypealias.fir.kt index 749fc478b53..119fd39e8bf 100644 --- a/compiler/testData/diagnostics/tests/multiplatform/headerClass/actualClassWithDefaultValuesInAnnotationViaTypealias.fir.kt +++ b/compiler/testData/diagnostics/tests/multiplatform/headerClass/actualClassWithDefaultValuesInAnnotationViaTypealias.fir.kt @@ -6,8 +6,8 @@ expect annotation class Foo2 expect annotation class Foo3 expect annotation class Foo4 expect annotation class Foo5() -expect annotation class Foo6() -expect annotation class Foo7() +expect annotation class Foo6() +expect annotation class Foo7() @Foo1 fun foo() {} diff --git a/compiler/testData/diagnostics/tests/multiplatform/headerClass/actualClassWithDifferentConstructors.fir.kt b/compiler/testData/diagnostics/tests/multiplatform/headerClass/actualClassWithDifferentConstructors.fir.kt index 4e622f964e4..649563e8234 100644 --- a/compiler/testData/diagnostics/tests/multiplatform/headerClass/actualClassWithDifferentConstructors.fir.kt +++ b/compiler/testData/diagnostics/tests/multiplatform/headerClass/actualClassWithDifferentConstructors.fir.kt @@ -5,9 +5,9 @@ expect class Foo1 expect class Foo2 expect class Foo3 -expect class Bar1() -expect class Bar2() -expect class Bar3() +expect class Bar1() +expect class Bar2() +expect class Bar3() expect class Bar4() expect class Bar5() expect class Bar6()