From a30abcb00c0f89c0353e726ee02014c5bd17e853 Mon Sep 17 00:00:00 2001 From: Sebastian Sellmair Date: Mon, 27 Feb 2023 13:51:35 +0100 Subject: [PATCH] [Gradle] Move KotlinCompilationK2MultiplatformConfigurator into 'DefaultKotlinCompilationPreConfigure' ^KT-56210 Verification Pending --- .../DefaultKotlinCompilationPostConfigure.kt | 12 ++++++++ .../DefautlKotlinCompilationPreConfigure.kt | 12 ++++++++ ...lationRegisterInSourceSetsConfigurator.kt} | 8 +++--- .../factory/KotlinCompilationImplFactory.kt | 28 ++++++++++++------- .../jvm/KotlinWithJavaCompilationFactory.kt | 4 ++- 5 files changed, 49 insertions(+), 15 deletions(-) create mode 100644 libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/compilationImpl/DefaultKotlinCompilationPostConfigure.kt create mode 100644 libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/compilationImpl/DefautlKotlinCompilationPreConfigure.kt rename libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/compilationImpl/{factory/DefaultKotlinCompilationPostConfigure.kt => KotlinCompilationRegisterInSourceSetsConfigurator.kt} (62%) diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/compilationImpl/DefaultKotlinCompilationPostConfigure.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/compilationImpl/DefaultKotlinCompilationPostConfigure.kt new file mode 100644 index 00000000000..f4ce4d6f5d1 --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/compilationImpl/DefaultKotlinCompilationPostConfigure.kt @@ -0,0 +1,12 @@ +/* + * Copyright 2010-2023 JetBrains s.r.o. and Kotlin Programming Language contributors. + * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file. + */ + +package org.jetbrains.kotlin.gradle.plugin.mpp.compilationImpl + +import org.jetbrains.kotlin.gradle.plugin.mpp.compilationImpl.factory.KotlinCompilationImplFactory + +internal val DefaultKotlinCompilationPostConfigure = KotlinCompilationImplFactory.PostConfigure.composite( + KotlinCompilationRegisterInSourceSetsConfigurator +) \ No newline at end of file diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/compilationImpl/DefautlKotlinCompilationPreConfigure.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/compilationImpl/DefautlKotlinCompilationPreConfigure.kt new file mode 100644 index 00000000000..fb82248694b --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/compilationImpl/DefautlKotlinCompilationPreConfigure.kt @@ -0,0 +1,12 @@ +/* + * Copyright 2010-2023 JetBrains s.r.o. and Kotlin Programming Language contributors. + * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file. + */ + +package org.jetbrains.kotlin.gradle.plugin.mpp.compilationImpl + +import org.jetbrains.kotlin.gradle.plugin.mpp.compilationImpl.factory.KotlinCompilationImplFactory + +internal val DefaultKotlinCompilationPreConfigure = KotlinCompilationImplFactory.PreConfigure.composite( + KotlinCompilationLanguageVersionConfigurator, KotlinCompilationK2MultiplatformConfigurator +) \ No newline at end of file diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/compilationImpl/factory/DefaultKotlinCompilationPostConfigure.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/compilationImpl/KotlinCompilationRegisterInSourceSetsConfigurator.kt similarity index 62% rename from libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/compilationImpl/factory/DefaultKotlinCompilationPostConfigure.kt rename to libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/compilationImpl/KotlinCompilationRegisterInSourceSetsConfigurator.kt index 3cdc9016e7b..51fcdcddfa4 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/compilationImpl/factory/DefaultKotlinCompilationPostConfigure.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/compilationImpl/KotlinCompilationRegisterInSourceSetsConfigurator.kt @@ -1,15 +1,15 @@ /* - * Copyright 2010-2022 JetBrains s.r.o. and Kotlin Programming Language contributors. + * Copyright 2010-2023 JetBrains s.r.o. and Kotlin Programming Language contributors. * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file. */ -package org.jetbrains.kotlin.gradle.plugin.mpp.compilationImpl.factory +package org.jetbrains.kotlin.gradle.plugin.mpp.compilationImpl import org.jetbrains.kotlin.gradle.plugin.mpp.DecoratedKotlinCompilation -import org.jetbrains.kotlin.gradle.plugin.mpp.InternalKotlinCompilation +import org.jetbrains.kotlin.gradle.plugin.mpp.compilationImpl.factory.KotlinCompilationImplFactory import org.jetbrains.kotlin.gradle.plugin.sources.internal -internal object DefaultKotlinCompilationPostConfigure : KotlinCompilationImplFactory.PostConfigure { +internal object KotlinCompilationRegisterInSourceSetsConfigurator : KotlinCompilationImplFactory.PostConfigure { override fun configure(compilation: DecoratedKotlinCompilation<*>) { /* Ensure proper tracking of compilations in the source sets */ compilation.allKotlinSourceSets.forAll { sourceSet -> diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/compilationImpl/factory/KotlinCompilationImplFactory.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/compilationImpl/factory/KotlinCompilationImplFactory.kt index db23efa035e..0791e6cb335 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/compilationImpl/factory/KotlinCompilationImplFactory.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/compilationImpl/factory/KotlinCompilationImplFactory.kt @@ -42,10 +42,7 @@ internal class KotlinCompilationImplFactory( DefaultProcessResourcesTaskNameFactory, private val preConfigureAction: PreConfigure = - PreConfigure.composite( - KotlinCompilationK2MultiplatformConfigurator, - KotlinCompilationLanguageVersionConfigurator - ), + DefaultKotlinCompilationPreConfigure, private val postConfigureAction: PostConfigure = DefaultKotlinCompilationPostConfigure @@ -125,11 +122,26 @@ internal class KotlinCompilationImplFactory( return compilation } +} +internal operator fun KotlinCompilationImplFactory.PreConfigure.plus( + other: KotlinCompilationImplFactory.PreConfigure +): KotlinCompilationImplFactory.PreConfigure { + val thisElements = if (this is CompositePreConfigure) this.elements else listOf(this) + val otherElements = if (other is CompositePreConfigure) other.elements else listOf(other) + return CompositePreConfigure(thisElements + otherElements) +} + +internal operator fun KotlinCompilationImplFactory.PostConfigure.plus( + other: KotlinCompilationImplFactory.PostConfigure +): KotlinCompilationImplFactory.PostConfigure { + val thisElements = if (this is CompositePostConfigure) this.elements else listOf(this) + val otherElements = if (other is CompositePostConfigure) other.elements else listOf(other) + return CompositePostConfigure(thisElements + otherElements) } private class CompositePreConfigure( - private val elements: List + val elements: List ) : KotlinCompilationImplFactory.PreConfigure { override fun configure(compilation: KotlinCompilationImpl) { elements.forEach { element -> element.configure(compilation) } @@ -137,13 +149,9 @@ private class CompositePreConfigure( } private class CompositePostConfigure( - private val elements: List + val elements: List ) : KotlinCompilationImplFactory.PostConfigure { override fun configure(compilation: DecoratedKotlinCompilation<*>) { elements.forEach { element -> element.configure(compilation) } } } - -private object EmptyPreConfigure : KotlinCompilationImplFactory.PreConfigure { - override fun configure(compilation: KotlinCompilationImpl) = Unit -} diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/jvm/KotlinWithJavaCompilationFactory.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/jvm/KotlinWithJavaCompilationFactory.kt index 91f75ee708f..f4c27a6bc23 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/jvm/KotlinWithJavaCompilationFactory.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/jvm/KotlinWithJavaCompilationFactory.kt @@ -9,10 +9,12 @@ package org.jetbrains.kotlin.gradle.plugin.mpp import org.jetbrains.kotlin.gradle.dsl.KotlinCommonCompilerOptions import org.jetbrains.kotlin.gradle.dsl.KotlinCommonOptions import org.jetbrains.kotlin.gradle.plugin.HasCompilerOptions +import org.jetbrains.kotlin.gradle.plugin.mpp.compilationImpl.DefaultKotlinCompilationPreConfigure import org.jetbrains.kotlin.gradle.plugin.mpp.compilationImpl.KotlinJvmCompilationAssociator import org.jetbrains.kotlin.gradle.plugin.mpp.compilationImpl.factory.JvmWithJavaCompilationDependencyConfigurationsFactory import org.jetbrains.kotlin.gradle.plugin.mpp.compilationImpl.factory.JvmWithJavaCompilationTaskNamesContainerFactory import org.jetbrains.kotlin.gradle.plugin.mpp.compilationImpl.factory.KotlinCompilationImplFactory +import org.jetbrains.kotlin.gradle.plugin.mpp.compilationImpl.factory.plus import org.jetbrains.kotlin.gradle.utils.filesProvider class KotlinWithJavaCompilationFactory internal constructor( @@ -52,7 +54,7 @@ class KotlinWithJavaCompilationFactory + preConfigureAction = DefaultKotlinCompilationPreConfigure + { compilation -> compilation.compileDependencyFiles = project.filesProvider { javaSourceSet.compileClasspath } compilation.runtimeDependencyFiles = project.filesProvider { javaSourceSet.runtimeClasspath } }