From 0bf6f1eb833c24a324b35e5d3fa939f92a8bd11e Mon Sep 17 00:00:00 2001 From: Pavel Kirpichenkov Date: Tue, 15 Feb 2022 16:28:12 +0300 Subject: [PATCH] [MPP] Fix default parameter value for optimistic commonization in KGP KT-51332 --- .../kotlin/gradle/CommonizerHierarchicalIT.kt | 10 +++++++++ .../optimisticCommonization/build.gradle.kts | 21 +++++++++++++++++++ .../optimisticCommonization/gradle.properties | 1 + .../libs/intPlatform.h | 1 + .../libs/longPlatform.h | 1 + .../src/commonMain/kotlin/common.kt | 3 +++ .../cinterop/intPropertyInterop.def | 0 .../kotlin/gradle/plugin/KotlinProperties.kt | 2 +- 8 files changed, 38 insertions(+), 1 deletion(-) create mode 100644 libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/optimisticCommonization/build.gradle.kts create mode 100644 libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/optimisticCommonization/gradle.properties create mode 100644 libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/optimisticCommonization/libs/intPlatform.h create mode 100644 libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/optimisticCommonization/libs/longPlatform.h create mode 100644 libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/optimisticCommonization/src/commonMain/kotlin/common.kt create mode 100644 libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/optimisticCommonization/src/nativeInterop/cinterop/intPropertyInterop.def diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/CommonizerHierarchicalIT.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/CommonizerHierarchicalIT.kt index 0d422a96798..736c307e276 100644 --- a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/CommonizerHierarchicalIT.kt +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/CommonizerHierarchicalIT.kt @@ -143,6 +143,16 @@ class CommonizerHierarchicalIT : BaseGradleIT() { } } + @Test + fun `test KT-51332 optimistic commonization`() { + with(Project("optimisticCommonization")) { + build(":compileCommonMainKotlinMetadata") { + assertNotContains("Unresolved reference") + assertSuccessful() + } + } + } + private object Os { private val os = OperatingSystem.current() val canCompileApple get() = os.isMacOsX diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/optimisticCommonization/build.gradle.kts b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/optimisticCommonization/build.gradle.kts new file mode 100644 index 00000000000..9c97d9051ff --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/optimisticCommonization/build.gradle.kts @@ -0,0 +1,21 @@ +plugins { + kotlin("multiplatform") +} + +repositories { + mavenCentral() + mavenLocal() +} + +kotlin { + linuxArm32Hfp("intPlatform") { + compilations.get("main").cinterops.create("intPropertyInterop") { + header(file("libs/intPlatform.h")) + } + } + linuxX64("longPlatform") { + compilations.get("main").cinterops.create("intPropertyInterop") { + header(file("libs/longPlatform.h")) + } + } +} diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/optimisticCommonization/gradle.properties b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/optimisticCommonization/gradle.properties new file mode 100644 index 00000000000..8c16cf3d552 --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/optimisticCommonization/gradle.properties @@ -0,0 +1 @@ +kotlin.mpp.enableCInteropCommonization=true diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/optimisticCommonization/libs/intPlatform.h b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/optimisticCommonization/libs/intPlatform.h new file mode 100644 index 00000000000..9a4f9414051 --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/optimisticCommonization/libs/intPlatform.h @@ -0,0 +1 @@ +int unsafeProp; diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/optimisticCommonization/libs/longPlatform.h b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/optimisticCommonization/libs/longPlatform.h new file mode 100644 index 00000000000..10515836e67 --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/optimisticCommonization/libs/longPlatform.h @@ -0,0 +1 @@ +long long unsafeProp; diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/optimisticCommonization/src/commonMain/kotlin/common.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/optimisticCommonization/src/commonMain/kotlin/common.kt new file mode 100644 index 00000000000..d076ef1f78b --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/optimisticCommonization/src/commonMain/kotlin/common.kt @@ -0,0 +1,3 @@ +fun testCommon() { + intPropertyInterop.unsafeProp +} diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/optimisticCommonization/src/nativeInterop/cinterop/intPropertyInterop.def b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/optimisticCommonization/src/nativeInterop/cinterop/intPropertyInterop.def new file mode 100644 index 00000000000..e69de29bb2d diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/KotlinProperties.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/KotlinProperties.kt index 7d47c36dba3..bd613974a35 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/KotlinProperties.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/KotlinProperties.kt @@ -219,7 +219,7 @@ internal class PropertiesProvider private constructor(private val project: Proje get() = booleanProperty(KotlinMultiplatformPlugin.STABILITY_NOWARN_FLAG) val mppEnableOptimisticNumberCommonization: Boolean - get() = booleanProperty(KOTLIN_MPP_ENABLE_OPTIMISTIC_NUMBER_COMMONIZATION) ?: false + get() = booleanProperty(KOTLIN_MPP_ENABLE_OPTIMISTIC_NUMBER_COMMONIZATION) ?: true val wasmStabilityNoWarn: Boolean get() = booleanProperty("kotlin.wasm.stability.nowarn") ?: false