From ac851523d8469ca9a864bf08a4b0314d4eb962ae Mon Sep 17 00:00:00 2001 From: Alexander Likhachev Date: Mon, 16 Nov 2020 04:03:31 +0300 Subject: [PATCH] [Gradle, MPP] Make KotlinCompileCommon task cc-compatible with warnings Kotlin options are accessed via compilation. Compilation field is marked as transient and so not available after deserializing task from Gradle configuration cache. Accessing 'isCompatibilityMetadataVariantEnabled' property via project in tasks 'onlyIf' causes Gradle to project instance serialization attempt that fails (#KT-43141, #KT-43329) Fixed --- .../targets/metadata/KotlinMetadataTargetConfigurator.kt | 5 +++-- .../org/jetbrains/kotlin/gradle/tasks/KotlinCompileCommon.kt | 4 ++-- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/metadata/KotlinMetadataTargetConfigurator.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/metadata/KotlinMetadataTargetConfigurator.kt index ac3bde84131..d73523ab350 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/metadata/KotlinMetadataTargetConfigurator.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/metadata/KotlinMetadataTargetConfigurator.kt @@ -65,14 +65,15 @@ class KotlinMetadataTargetConfigurator(kotlinPluginVersion: String) : KotlinBuildStatsService.getInstance()?.report(BooleanMetrics.ENABLED_HMPP, true) target.compilations.withType(KotlinCommonCompilation::class.java).getByName(KotlinCompilation.MAIN_COMPILATION_NAME).run { - if (target.project.isCompatibilityMetadataVariantEnabled) { + val isCompatibilityMetadataVariantEnabled = target.project.isCompatibilityMetadataVariantEnabled + if (isCompatibilityMetadataVariantEnabled) { // Force the default 'main' compilation to produce *.kotlin_metadata regardless of the klib feature flag. forceCompilationToKotlinMetadata = true } else { // Clear the dependencies of the compilation so that they don't take time resolving during task graph construction: compileDependencyFiles = target.project.files() } - compileKotlinTaskProvider.configure { it.onlyIf { target.project.isCompatibilityMetadataVariantEnabled } } + compileKotlinTaskProvider.configure { it.onlyIf { isCompatibilityMetadataVariantEnabled } } } createMergedAllSourceSetsConfigurations(target) diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/tasks/KotlinCompileCommon.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/tasks/KotlinCompileCommon.kt index 27efaac61d0..146ce7ca6fb 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/tasks/KotlinCompileCommon.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/tasks/KotlinCompileCommon.kt @@ -40,8 +40,8 @@ import java.io.File @CacheableTask open class KotlinCompileCommon : AbstractKotlinCompile(), KotlinCommonCompile { - override val kotlinOptions: KotlinMultiplatformCommonOptions - get() = taskData.compilation.kotlinOptions as KotlinMultiplatformCommonOptionsImpl + override val kotlinOptions: KotlinMultiplatformCommonOptions = + taskData.compilation.kotlinOptions as KotlinMultiplatformCommonOptionsImpl override fun createCompilerArgs(): K2MetadataCompilerArguments = K2MetadataCompilerArguments()