[Gradle] rework addSourceSet to not let sourceSets be exposed in groovy

Also mark it as deprecated to prevent internal misuses.

^KT-58234 Verification Pending
This commit is contained in:
Anton Lakotka
2023-07-21 09:49:38 +02:00
committed by Space Team
parent f05856f6a0
commit 67f4343137
8 changed files with 15 additions and 5 deletions
@@ -194,6 +194,7 @@ internal abstract class AbstractKotlinPlugin(
javaSourceSet.resources.setSrcDirs(
listOf { kotlinSourceSet.resources.sourceDirectories }
)
@Suppress("DEPRECATION")
kotlinCompilation.addSourceSet(kotlinSourceSet)
project.compatibilityConventionRegistrar.addConvention(javaSourceSet, kotlinSourceSetDslName, kotlinSourceSet)
javaSourceSet.addExtension(kotlinSourceSetDslName, kotlinSourceSet.kotlin)
@@ -204,6 +205,7 @@ internal abstract class AbstractKotlinPlugin(
}
kotlinTarget.compilations.all { kotlinCompilation ->
@Suppress("DEPRECATION")
kotlinCompilation.addSourceSet(kotlinCompilation.defaultSourceSet)
}
@@ -100,6 +100,7 @@ abstract class AbstractKotlinTargetConfigurator<KotlinTargetType : KotlinTarget>
override fun configureSourceSet(target: KotlinTargetType) {
target.compilations.all { compilation ->
@Suppress("DEPRECATION")
compilation.addSourceSet(compilation.defaultSourceSet) // also adds dependencies, requires the configurations for target and source set to exist at this point
}
}
@@ -6,16 +6,17 @@
package org.jetbrains.kotlin.gradle.plugin.mpp
import org.gradle.api.file.FileCollection
import org.jetbrains.kotlin.gradle.InternalKotlinGradlePluginApi
import org.jetbrains.kotlin.gradle.dsl.KotlinCommonOptions
import org.jetbrains.kotlin.gradle.plugin.KotlinCompilation
import org.jetbrains.kotlin.gradle.plugin.KotlinPluginLifecycle
import org.jetbrains.kotlin.gradle.plugin.KotlinSourceSet
import org.jetbrains.kotlin.gradle.plugin.await
import org.jetbrains.kotlin.gradle.plugin.mpp.compilationImpl.KotlinCompilationConfigurationsContainer
import org.jetbrains.kotlin.gradle.plugin.mpp.compilationImpl.KotlinCompilationSourceSetsContainer
import org.jetbrains.kotlin.gradle.utils.ObservableSet
import org.jetbrains.kotlin.tooling.core.HasMutableExtras
@InternalKotlinGradlePluginApi
internal interface InternalKotlinCompilation<out T : KotlinCommonOptions> : KotlinCompilation<T>, HasMutableExtras {
override val kotlinSourceSets: ObservableSet<KotlinSourceSet>
override val allKotlinSourceSets: ObservableSet<KotlinSourceSet>
@@ -23,7 +24,6 @@ internal interface InternalKotlinCompilation<out T : KotlinCommonOptions> : Kotl
val configurations: KotlinCompilationConfigurationsContainer
val friendPaths: Iterable<FileCollection>
val processResourcesTaskName: String?
val sourceSets: KotlinCompilationSourceSetsContainer
}
internal val <T : KotlinCommonOptions> KotlinCompilation<T>.internal: InternalKotlinCompilation<T>
@@ -36,5 +36,7 @@ internal suspend fun InternalKotlinCompilation<*>.awaitAllKotlinSourceSets(): Se
return allKotlinSourceSets
}
internal fun KotlinCompilation<*>.addSourceSet(kotlinSourceSet: KotlinSourceSet) =
internal.sourceSets.source(kotlinSourceSet)
@Deprecated("KT-58234: Adding source sets to Compilation is not recommended. Please consider using dependsOn.")
internal fun KotlinCompilation<*>.addSourceSet(kotlinSourceSet: KotlinSourceSet) {
internal.decoratedInstance.compilation.sourceSets.source(kotlinSourceSet)
}
@@ -59,7 +59,7 @@ internal class KotlinCompilationImpl constructor(
override val extras: MutableExtras = mutableExtrasOf()
override val sourceSets get() = params.sourceSets
val sourceSets get() = params.sourceSets
override val configurations: KotlinCompilationConfigurationsContainer
get() = params.dependencyConfigurations
@@ -206,9 +206,11 @@ internal class AndroidProjectHandler(
}
// Register the source only after the task is created, because the task is required for that:
@Suppress("DEPRECATION")
compilation.addSourceSet(defaultSourceSet)
compilation.androidVariant.forEachKotlinSourceSet(project) { kotlinSourceSet ->
@Suppress("DEPRECATION")
compilation.addSourceSet(kotlinSourceSet)
}
}
@@ -62,6 +62,7 @@ open class KotlinJsTargetConfigurator :
val project = target.project
target.compilations.all { compilation ->
@Suppress("DEPRECATION")
compilation.addSourceSet(compilation.defaultSourceSet)
configureResourceProcessing(
@@ -79,6 +79,7 @@ class KotlinMetadataTargetConfigurator :
// it isn't necessary for KLib compilations
// see [KotlinCompilationSourceSetInclusion.AddSourcesWithoutDependsOnClosure]
defaultSourceSet.internal.dependsOnClosure.forAll {
@Suppress("DEPRECATION")
addSourceSet(it)
}
} else {
@@ -54,6 +54,7 @@ class KotlinMetadataTargetPreset(
val mainCompilation = compilations.getByName(KotlinCompilation.MAIN_COMPILATION_NAME)
val commonMainSourceSet = project.kotlinExtension.sourceSets.getByName(KotlinSourceSet.COMMON_MAIN_SOURCE_SET_NAME)
@Suppress("DEPRECATION")
mainCompilation.addSourceSet(commonMainSourceSet)
project.whenEvaluated {