From b2e03035a9e391a6fdc3aaec9b600db8e1af0646 Mon Sep 17 00:00:00 2001 From: Dmitriy Novozhilov Date: Tue, 28 Mar 2023 20:41:56 +0300 Subject: [PATCH] [FIR] Properly load `isExpect` flag for constructors ^KT-57635 Fixed --- .../kotlin/fir/deserialization/FirMemberDeserializer.kt | 4 +++- .../src/test/kotlin/org/jetbrains/kotlin/gradle/K2Tests.kt | 2 +- .../k2-mpp-without-js/src/commonMain/kotlin/kt57635.common.kt | 4 ++++ .../src/intermediateMain/kotlin/kt57635.intermediate.kt | 4 ++++ 4 files changed, 12 insertions(+), 2 deletions(-) create mode 100644 libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/k2-mpp-without-js/src/commonMain/kotlin/kt57635.common.kt create mode 100644 libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/k2-mpp-without-js/src/intermediateMain/kotlin/kt57635.intermediate.kt diff --git a/compiler/fir/fir-deserialization/src/org/jetbrains/kotlin/fir/deserialization/FirMemberDeserializer.kt b/compiler/fir/fir-deserialization/src/org/jetbrains/kotlin/fir/deserialization/FirMemberDeserializer.kt index 6f6acc34166..ab1137de601 100644 --- a/compiler/fir/fir-deserialization/src/org/jetbrains/kotlin/fir/deserialization/FirMemberDeserializer.kt +++ b/compiler/fir/fir-deserialization/src/org/jetbrains/kotlin/fir/deserialization/FirMemberDeserializer.kt @@ -571,7 +571,9 @@ class FirMemberDeserializer(private val c: FirDeserializationContext) { Modality.FINAL, visibility.toEffectiveVisibility(classBuilder.symbol) ).apply { - isExpect = Flags.IS_EXPECT_FUNCTION.get(flags) + // We don't store information about expect modifier on constructors + // It is inherited from containing class + isExpect = Flags.IS_EXPECT_CLASS.get(classProto.flags) hasStableParameterNames = !Flags.IS_CONSTRUCTOR_WITH_NON_STABLE_PARAMETER_NAMES.get(flags) isActual = false isOverride = false diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/K2Tests.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/K2Tests.kt index 05fa92c0d4f..bbb72d8c0de 100644 --- a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/K2Tests.kt +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/K2Tests.kt @@ -53,7 +53,7 @@ class CustomK2Tests : KGPBaseTest() { } @GradleTest - @DisplayName("HMPP compilation without JS target. KT-57376") + @DisplayName("HMPP compilation without JS target. KT-57376, KT-57635") fun testHmppCompilationWithoutJsTarget(gradleVersion: GradleVersion) { with(project("k2-mpp-without-js", gradleVersion)) { val taskToExecute = ":compileIntermediateMainKotlinMetadata" diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/k2-mpp-without-js/src/commonMain/kotlin/kt57635.common.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/k2-mpp-without-js/src/commonMain/kotlin/kt57635.common.kt new file mode 100644 index 00000000000..772888ccc9f --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/k2-mpp-without-js/src/commonMain/kotlin/kt57635.common.kt @@ -0,0 +1,4 @@ +// ISSUE: KT-57635 +package kt57635 + +expect class A() diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/k2-mpp-without-js/src/intermediateMain/kotlin/kt57635.intermediate.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/k2-mpp-without-js/src/intermediateMain/kotlin/kt57635.intermediate.kt new file mode 100644 index 00000000000..d4f0640c54c --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/k2-mpp-without-js/src/intermediateMain/kotlin/kt57635.intermediate.kt @@ -0,0 +1,4 @@ +// ISSUE: KT-57635 +package kt57635 + +actual class A actual constructor()