[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
This commit is contained in:
Alexander Likhachev
2020-11-16 04:03:31 +03:00
parent c6f46598ca
commit ac851523d8
2 changed files with 5 additions and 4 deletions
@@ -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)
@@ -40,8 +40,8 @@ import java.io.File
@CacheableTask
open class KotlinCompileCommon : AbstractKotlinCompile<K2MetadataCompilerArguments>(), 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()