From 67fc4f0ed63299ef4ae640aeed9f0387996ba227 Mon Sep 17 00:00:00 2001 From: Sebastian Sellmair Date: Fri, 9 Sep 2022 13:20:19 +0200 Subject: [PATCH] [Gradle][MPP] Replace .kotlinSourceSetsIncludingDefault with .kotlinSourceSets ^KT-52726 Verification Pending ^KT-45412 Verification Pending --- .../gradle/plugin/KotlinTargetConfigurator.kt | 10 +--------- .../mpp/GranularMetadataTransformation.kt | 2 +- .../gradle/plugin/mpp/kotlinCompilations.kt | 16 +++------------- .../targets/js/KotlinJsCompilationFactory.kt | 14 ++++++++++++++ .../js/ir/KotlinJsIrCompilationFactory.kt | 4 +--- .../metadata/KotlinMetadataTargetPreset.kt | 4 +++- .../native/internal/CInteropCommonizerTask.kt | 3 +-- .../internal/GetDependingNativeCompilations.kt | 17 ++--------------- 8 files changed, 26 insertions(+), 44 deletions(-) diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/KotlinTargetConfigurator.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/KotlinTargetConfigurator.kt index 5b0cbaf4648..7090fae44e7 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/KotlinTargetConfigurator.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/KotlinTargetConfigurator.kt @@ -17,20 +17,17 @@ import org.gradle.api.attributes.Attribute import org.gradle.api.attributes.Category import org.gradle.api.attributes.Usage import org.gradle.api.attributes.Usage.USAGE_ATTRIBUTE -import org.gradle.api.file.ConfigurableFileCollection import org.gradle.api.file.FileCollection import org.gradle.api.internal.artifacts.ArtifactAttributes import org.gradle.api.plugins.BasePlugin import org.gradle.api.plugins.ExtensionAware import org.gradle.api.plugins.JavaBasePlugin -import org.gradle.api.tasks.Delete import org.gradle.api.tasks.TaskProvider import org.gradle.api.tasks.bundling.Jar import org.gradle.api.tasks.bundling.Zip import org.gradle.language.base.plugins.LifecycleBasePlugin import org.gradle.language.jvm.tasks.ProcessResources import org.jetbrains.kotlin.gradle.dsl.KotlinCommonOptions -import org.jetbrains.kotlin.gradle.dsl.kotlinExtension import org.jetbrains.kotlin.gradle.internal.reorderPluginClasspathDependencies import org.jetbrains.kotlin.gradle.plugin.mpp.* import org.jetbrains.kotlin.gradle.targets.js.KotlinJsCompilerAttribute @@ -39,7 +36,6 @@ import org.jetbrains.kotlin.gradle.targets.js.ir.KotlinJsIrTarget import org.jetbrains.kotlin.gradle.tasks.locateOrRegisterTask import org.jetbrains.kotlin.gradle.tasks.registerTask import org.jetbrains.kotlin.gradle.utils.* -import org.jetbrains.kotlin.gradle.utils.lowerCamelCaseName import java.util.concurrent.Callable import kotlin.reflect.KMutableProperty1 import kotlin.reflect.full.memberProperties @@ -102,13 +98,9 @@ abstract class AbstractKotlinTargetConfigurator } override fun configureSourceSet(target: KotlinTargetType) { - val project = target.project - target.compilations.all { compilation -> if (createDefaultSourceSets) { - project.kotlinExtension.sourceSets.maybeCreate(compilation.defaultSourceSetName).also { sourceSet -> - compilation.source(sourceSet) // also adds dependencies, requires the configurations for target and source set to exist at this point - } + compilation.source(compilation.defaultSourceSet) // also adds dependencies, requires the configurations for target and source set to exist at this point } } } diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/GranularMetadataTransformation.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/GranularMetadataTransformation.kt index e2d71a4b4e3..f35e5ea75e6 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/GranularMetadataTransformation.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/GranularMetadataTransformation.kt @@ -375,5 +375,5 @@ internal fun requestedDependencies( private val KotlinMultiplatformExtension.platformCompilationSourceSets: Set get() = targets.filterNot { it is KotlinMetadataTarget } .flatMap { target -> target.compilations } - .flatMap { it.kotlinSourceSetsIncludingDefault } + .flatMap { it.kotlinSourceSets } .toSet() diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/kotlinCompilations.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/kotlinCompilations.kt index 9b9c111e3ad..306c4cc5e12 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/kotlinCompilations.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/kotlinCompilations.kt @@ -6,13 +6,11 @@ package org.jetbrains.kotlin.gradle.plugin.mpp import org.gradle.api.Project -import org.jetbrains.kotlin.gradle.dsl.* -import org.jetbrains.kotlin.gradle.plugin.* -import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.* +import org.jetbrains.kotlin.gradle.plugin.KotlinCompilation import org.jetbrains.kotlin.gradle.tasks.AbstractKotlinCompile -import org.jetbrains.kotlin.gradle.utils.* +import org.jetbrains.kotlin.gradle.utils.fileExtensionCasePermutations +import org.jetbrains.kotlin.gradle.utils.lowerCamelCaseName import org.jetbrains.kotlin.tooling.core.closure -import java.util.* import java.util.concurrent.Callable internal fun KotlinCompilation<*>.isMain(): Boolean = @@ -21,14 +19,6 @@ internal fun KotlinCompilation<*>.isMain(): Boolean = internal fun KotlinCompilation<*>.isTest(): Boolean = name == KotlinCompilation.TEST_COMPILATION_NAME -/** - * see https://youtrack.jetbrains.com/issue/KT-45412 - * Some implementations of [KotlinCompilation] are not including their [KotlinCompilation.defaultSourceSet] into [kotlinSourceSet]s - * This helper function might disappear in the future, once the behaviour of those [KotlinCompilation] implementations is streamlined. - * @return [KotlinCompilation.kotlinSourceSets] + [KotlinCompilation.defaultSourceSet] - */ -internal val KotlinCompilation<*>.kotlinSourceSetsIncludingDefault: Set get() = kotlinSourceSets + defaultSourceSet - internal fun addCommonSourcesToKotlinCompileTask( project: Project, taskName: String, diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/js/KotlinJsCompilationFactory.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/js/KotlinJsCompilationFactory.kt index 49eee391ba2..7506e2c6c7e 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/js/KotlinJsCompilationFactory.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/js/KotlinJsCompilationFactory.kt @@ -6,12 +6,26 @@ @file:Suppress("PackageDirectoryMismatch") // Old package for compatibility package org.jetbrains.kotlin.gradle.plugin.mpp +import org.jetbrains.kotlin.gradle.targets.js.KotlinJsTarget +import org.jetbrains.kotlin.gradle.utils.lowerCamelCaseName + class KotlinJsCompilationFactory( override val target: KotlinOnlyTarget, ) : KotlinCompilationFactory { override val itemClass: Class get() = KotlinJsCompilation::class.java + override fun defaultSourceSetName(compilationName: String): String { + val classifier = if (target is KotlinJsTarget && target.irTarget != null) + target.disambiguationClassifierInPlatform + else target.disambiguationClassifier + + return lowerCamelCaseName( + classifier, + compilationName + ) + } + override fun create(name: String): KotlinJsCompilation = target.project.objects.newInstance( KotlinJsCompilation::class.java, JsCompilationDetails(target, name, getOrCreateDefaultSourceSet(name)) ) diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/js/ir/KotlinJsIrCompilationFactory.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/js/ir/KotlinJsIrCompilationFactory.kt index 2b18d82befe..77027b3ffb4 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/js/ir/KotlinJsIrCompilationFactory.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/js/ir/KotlinJsIrCompilationFactory.kt @@ -7,18 +7,16 @@ package org.jetbrains.kotlin.gradle.targets.js.ir import org.jetbrains.kotlin.gradle.plugin.mpp.JsIrCompilationDetails import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinCompilationFactory -import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinOnlyTarget import org.jetbrains.kotlin.gradle.plugin.mpp.getOrCreateDefaultSourceSet import org.jetbrains.kotlin.gradle.utils.lowerCamelCaseName class KotlinJsIrCompilationFactory( - override val target: KotlinOnlyTarget + override val target: KotlinJsIrTarget ) : KotlinCompilationFactory { override val itemClass: Class get() = KotlinJsIrCompilation::class.java override fun defaultSourceSetName(compilationName: String): String { - val target = target as KotlinJsIrTarget return lowerCamelCaseName( if (target.mixedMode) target.disambiguationClassifierInPlatform diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/metadata/KotlinMetadataTargetPreset.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/metadata/KotlinMetadataTargetPreset.kt index 2485b88d2f0..1f89404cc89 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/metadata/KotlinMetadataTargetPreset.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/metadata/KotlinMetadataTargetPreset.kt @@ -11,8 +11,8 @@ import org.jetbrains.kotlin.gradle.dsl.kotlinExtension import org.jetbrains.kotlin.gradle.plugin.* import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.hasKpmModel import org.jetbrains.kotlin.gradle.plugin.sources.applyLanguageSettingsToKotlinOptions -import org.jetbrains.kotlin.gradle.targets.metadata.KotlinMetadataTargetConfigurator import org.jetbrains.kotlin.gradle.targets.metadata.GradleKpmMetadataTargetConfigurator +import org.jetbrains.kotlin.gradle.targets.metadata.KotlinMetadataTargetConfigurator class KotlinMetadataTargetPreset( project: Project @@ -23,6 +23,8 @@ class KotlinMetadataTargetPreset( forTarget: KotlinMetadataTarget ): KotlinCompilationFactory> = object : KotlinCompilationFactory> { + override val target: KotlinTarget = forTarget + override val itemClass: Class> get() = AbstractKotlinCompilation::class.java diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/native/internal/CInteropCommonizerTask.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/native/internal/CInteropCommonizerTask.kt index f776d77473a..56d942c20b7 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/native/internal/CInteropCommonizerTask.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/native/internal/CInteropCommonizerTask.kt @@ -24,7 +24,6 @@ import org.jetbrains.kotlin.gradle.dsl.multiplatformExtensionOrNull import org.jetbrains.kotlin.gradle.plugin.KotlinCompilation import org.jetbrains.kotlin.gradle.plugin.KotlinSourceSet import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinSharedNativeCompilation -import org.jetbrains.kotlin.gradle.plugin.mpp.kotlinSourceSetsIncludingDefault import org.jetbrains.kotlin.gradle.plugin.sources.withDependsOnClosure import org.jetbrains.kotlin.gradle.targets.native.internal.CInteropCommonizerTask.CInteropGist import org.jetbrains.kotlin.gradle.tasks.CInteropProcess @@ -242,7 +241,7 @@ private fun CInteropProcess.toGist(): CInteropGist { identifier = settings.identifier, konanTarget = konanTarget, // FIXME support cinterop with PM20 - sourceSets = project.provider { (settings.compilation as? KotlinCompilation<*>)?.kotlinSourceSetsIncludingDefault }, + sourceSets = project.provider { (settings.compilation as? KotlinCompilation<*>)?.kotlinSourceSets }, libraryFile = outputFileProvider ) } diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/native/internal/GetDependingNativeCompilations.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/native/internal/GetDependingNativeCompilations.kt index bd9e921c23b..88f2e69e4b7 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/native/internal/GetDependingNativeCompilations.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/native/internal/GetDependingNativeCompilations.kt @@ -6,29 +6,16 @@ package org.jetbrains.kotlin.gradle.targets.native.internal import org.jetbrains.kotlin.gradle.dsl.multiplatformExtensionOrNull -import org.jetbrains.kotlin.gradle.plugin.KotlinCompilation -import org.jetbrains.kotlin.gradle.plugin.KotlinSourceSet import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinNativeCompilation import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinSharedNativeCompilation -import org.jetbrains.kotlin.gradle.plugin.mpp.kotlinSourceSetsIncludingDefault -import org.jetbrains.kotlin.gradle.plugin.sources.withDependsOnClosure internal fun KotlinSharedNativeCompilation.getImplicitlyDependingNativeCompilations(): Set { val multiplatformExtension = project.multiplatformExtensionOrNull ?: return emptySet() - val allParticipatingSourceSetsOfCompilation = allParticipatingSourceSets() + val thisAllKotlinSourceSets = allKotlinSourceSets return multiplatformExtension.targets .flatMap { target -> target.compilations } .filterIsInstance() - .filter { nativeCompilation -> nativeCompilation.allParticipatingSourceSets().containsAll(allParticipatingSourceSetsOfCompilation) } + .filter { nativeCompilation -> nativeCompilation.allKotlinSourceSets.containsAll(thisAllKotlinSourceSets) } .toSet() } - -/** - * Some implementations of [KotlinCompilation] do not contain the default source set in - * [KotlinCompilation.kotlinSourceSets] or [KotlinCompilation.allKotlinSourceSets] - * see KT-45412 - */ -private fun KotlinCompilation<*>.allParticipatingSourceSets(): Set { - return kotlinSourceSetsIncludingDefault.withDependsOnClosure -}