[Gradle][Minor] Deprecate 'KotlinCompilation.associateWith' property...

... in favor of associateCompilations and allAssociateCompilations

^KT-60937 Verification Pending
This commit is contained in:
Sebastian Sellmair
2023-08-04 16:05:49 +02:00
committed by Space Team
parent 8ce820d944
commit 6c6200a9c5
13 changed files with 36 additions and 26 deletions
@@ -707,8 +707,10 @@ public abstract interface class org/jetbrains/kotlin/gradle/plugin/KotlinCompila
public abstract fun attributes (Lorg/gradle/api/Action;)V
public abstract fun defaultSourceSet (Lkotlin/jvm/functions/Function1;)V
public abstract fun defaultSourceSet (Lorg/gradle/api/Action;)V
public abstract fun getAllAssociatedCompilations ()Ljava/util/Set;
public abstract fun getAllKotlinSourceSets ()Ljava/util/Set;
public abstract fun getAssociateWith ()Ljava/util/List;
public abstract fun getAssociatedCompilations ()Ljava/util/Set;
public abstract fun getCompilationName ()Ljava/lang/String;
public abstract fun getCompileAllTaskName ()Ljava/lang/String;
public abstract fun getCompileDependencyConfigurationName ()Ljava/lang/String;
@@ -744,6 +746,7 @@ public final class org/jetbrains/kotlin/gradle/plugin/KotlinCompilation$DefaultI
public static fun attributes (Lorg/jetbrains/kotlin/gradle/plugin/KotlinCompilation;Lkotlin/jvm/functions/Function1;)V
public static fun attributes (Lorg/jetbrains/kotlin/gradle/plugin/KotlinCompilation;Lorg/gradle/api/Action;)V
public static fun defaultSourceSet (Lorg/jetbrains/kotlin/gradle/plugin/KotlinCompilation;Lorg/gradle/api/Action;)V
public static fun getAssociateWith (Lorg/jetbrains/kotlin/gradle/plugin/KotlinCompilation;)Ljava/util/List;
public static fun getDefaultSourceSetName (Lorg/jetbrains/kotlin/gradle/plugin/KotlinCompilation;)Ljava/lang/String;
public static fun getDisambiguatedName (Lorg/jetbrains/kotlin/gradle/plugin/KotlinCompilation;)Ljava/lang/String;
public static fun getName (Lorg/jetbrains/kotlin/gradle/plugin/KotlinCompilation;)Ljava/lang/String;
@@ -774,6 +777,7 @@ public final class org/jetbrains/kotlin/gradle/plugin/KotlinCompilationToRunnabl
public static fun attributes (Lorg/jetbrains/kotlin/gradle/plugin/KotlinCompilationToRunnableFiles;Lkotlin/jvm/functions/Function1;)V
public static fun attributes (Lorg/jetbrains/kotlin/gradle/plugin/KotlinCompilationToRunnableFiles;Lorg/gradle/api/Action;)V
public static fun defaultSourceSet (Lorg/jetbrains/kotlin/gradle/plugin/KotlinCompilationToRunnableFiles;Lorg/gradle/api/Action;)V
public static fun getAssociateWith (Lorg/jetbrains/kotlin/gradle/plugin/KotlinCompilationToRunnableFiles;)Ljava/util/List;
public static fun getDefaultSourceSetName (Lorg/jetbrains/kotlin/gradle/plugin/KotlinCompilationToRunnableFiles;)Ljava/lang/String;
public static fun getDisambiguatedName (Lorg/jetbrains/kotlin/gradle/plugin/KotlinCompilationToRunnableFiles;)Ljava/lang/String;
public static fun getName (Lorg/jetbrains/kotlin/gradle/plugin/KotlinCompilationToRunnableFiles;)Ljava/lang/String;
@@ -790,6 +794,7 @@ public final class org/jetbrains/kotlin/gradle/plugin/KotlinCompilationWithResou
public static fun attributes (Lorg/jetbrains/kotlin/gradle/plugin/KotlinCompilationWithResources;Lkotlin/jvm/functions/Function1;)V
public static fun attributes (Lorg/jetbrains/kotlin/gradle/plugin/KotlinCompilationWithResources;Lorg/gradle/api/Action;)V
public static fun defaultSourceSet (Lorg/jetbrains/kotlin/gradle/plugin/KotlinCompilationWithResources;Lorg/gradle/api/Action;)V
public static fun getAssociateWith (Lorg/jetbrains/kotlin/gradle/plugin/KotlinCompilationWithResources;)Ljava/util/List;
public static fun getDefaultSourceSetName (Lorg/jetbrains/kotlin/gradle/plugin/KotlinCompilationWithResources;)Ljava/lang/String;
public static fun getDisambiguatedName (Lorg/jetbrains/kotlin/gradle/plugin/KotlinCompilationWithResources;)Ljava/lang/String;
public static fun getName (Lorg/jetbrains/kotlin/gradle/plugin/KotlinCompilationWithResources;)Ljava/lang/String;
@@ -14,6 +14,7 @@ import org.gradle.api.attributes.HasAttributes
import org.gradle.api.file.FileCollection
import org.gradle.api.file.SourceDirectorySet
import org.gradle.api.tasks.TaskProvider
import org.jetbrains.kotlin.gradle.ExperimentalKotlinGradlePluginApi
import org.jetbrains.kotlin.gradle.dsl.KotlinCommonOptionsDeprecated
import org.jetbrains.kotlin.gradle.dsl.KotlinCompileDeprecated
import org.jetbrains.kotlin.gradle.tasks.KotlinCompilationTask
@@ -136,7 +137,23 @@ interface KotlinCompilation<out T : KotlinCommonOptionsDeprecated> : Named,
fun associateWith(other: KotlinCompilation<*>)
val associateWith: List<KotlinCompilation<*>>
@Deprecated("Use 'associatedCompilations' instead", ReplaceWith("associatedCompilations.toList()"))
val associateWith: List<KotlinCompilation<*>> get() = associatedCompilations.toList()
/**
* All compilations previously associated using [associateWith]
*
* e.g. 'test' compilations will return 'setOf(main)' by default
* @since 1.9.20
*/
val associatedCompilations: Set<KotlinCompilation<*>>
/**
* Full transitive closure of [associatedCompilations]
* @since 1.9.20
*/
@ExperimentalKotlinGradlePluginApi
val allAssociatedCompilations: Set<KotlinCompilation<*>>
override fun getName(): String = compilationName
@@ -208,7 +208,7 @@ class GradleProjectModuleBuilder(private val addInferredSourceSetVisibilityAsExp
targets.flatMap { it.compilations }.forEach { compilation ->
val variant = fragmentByName(compilation.defaultSourceSetName)
compilation.associateWith.forEach { associate ->
compilation.associatedCompilations.forEach { associate ->
val associateVariant = fragmentByName(associate.defaultSourceSetName)
variant.declaredModuleDependencies.add(KpmModuleDependency(associateVariant.containingModule.moduleIdentifier))
}
@@ -21,8 +21,8 @@ internal interface InternalKotlinCompilation<out T : KotlinCommonOptions> : Kotl
override val kotlinSourceSets: ObservableSet<KotlinSourceSet>
override val allKotlinSourceSets: ObservableSet<KotlinSourceSet>
val associatedCompilations: ObservableSet<KotlinCompilation<*>>
val allAssociatedCompilations: ObservableSet<KotlinCompilation<*>>
override val associatedCompilations: ObservableSet<KotlinCompilation<*>>
override val allAssociatedCompilations: ObservableSet<KotlinCompilation<*>>
val configurations: KotlinCompilationConfigurationsContainer
val friendPaths: Iterable<FileCollection>
@@ -10,7 +10,6 @@ import org.gradle.api.tasks.TaskProvider
import org.gradle.api.tasks.bundling.AbstractArchiveTask
import org.jetbrains.kotlin.gradle.plugin.mpp.*
import org.jetbrains.kotlin.gradle.plugin.sources.getVisibleSourceSetsFromAssociateCompilations
import org.jetbrains.kotlin.gradle.tasks.AbstractKotlinCompile
import org.jetbrains.kotlin.gradle.tasks.KotlinCompileTool
import org.jetbrains.kotlin.gradle.utils.filesProvider
@@ -25,7 +24,7 @@ internal class DefaultKotlinCompilationFriendPathsResolver(
override fun resolveFriendPaths(compilation: InternalKotlinCompilation<*>): Iterable<FileCollection> {
return mutableListOf<FileCollection>().apply {
compilation.associateWithClosure.forEach {
compilation.allAssociatedCompilations.forEach {
add(it.output.classesDirs)
// Adding classes that could be produced to non-default destination for JVM target
// Check KotlinSourceSetProcessor for details
@@ -69,7 +68,7 @@ internal class DefaultKotlinCompilationFriendPathsResolver(
}
private fun resolveFriendArtifactsTask(compilation: InternalKotlinCompilation<*>): TaskProvider<AbstractArchiveTask>? {
if (compilation.associateWithClosure.none { it.isMain() }) return null
if (compilation.allAssociatedCompilations.none { it.isMain() }) return null
val archiveTasks = compilation.project.tasks.withType(AbstractArchiveTask::class.java)
if (compilation.target.artifactsTaskName !in archiveTasks.names) return null
return archiveTasks.named(compilation.target.artifactsTaskName)
@@ -194,9 +194,6 @@ internal class KotlinCompilationImpl constructor(
override val allAssociatedCompilations: ObservableSet<KotlinCompilation<*>>
get() = allAssociatedCompilationsImpl
override val associateWith: List<KotlinCompilation<*>>
get() = associatedCompilationsImpl.toList()
override fun associateWith(other: KotlinCompilation<*>) {
require(other.target == target) { "Only associations between compilations of a single target are supported" }
if (!associatedCompilationsImpl.add(other)) return
@@ -71,9 +71,6 @@ internal fun addSourcesToKotlinCompileTask(
}
}
internal val KotlinCompilation<*>.associateWithClosure: Iterable<KotlinCompilation<*>>
get() = this.closure { it.associateWith }
internal fun KotlinCompilation<*>.disambiguateName(simpleName: String): String {
return lowerCamelCaseName(
target.disambiguationClassifier,
@@ -6,14 +6,11 @@
package org.jetbrains.kotlin.gradle.plugin.sources
import org.gradle.api.GradleException
import org.gradle.api.Project
import org.jetbrains.kotlin.gradle.dsl.kotlinExtension
import org.jetbrains.kotlin.gradle.plugin.KotlinCompilation
import org.jetbrains.kotlin.gradle.plugin.KotlinSourceSet
import org.jetbrains.kotlin.gradle.plugin.mpp.associateWithClosure
fun getSourceSetsFromAssociatedCompilations(fromCompilation: KotlinCompilation<*>): Map<KotlinCompilation<*>, Set<KotlinSourceSet>> =
fromCompilation.associateWithClosure.associate { it to it.allKotlinSourceSets }
fromCompilation.allAssociatedCompilations.associate { it to it.allKotlinSourceSets }
fun getVisibleSourceSetsFromAssociateCompilations(
sourceSet: KotlinSourceSet
@@ -93,7 +90,7 @@ class UnsatisfiedSourceSetVisibilityException(
else "\n"
)
compilation.associateWith.forEach { appendCompilationRecursively(it, depth + 1) }
compilation.associatedCompilations.toList().forEach { appendCompilationRecursively(it, depth + 1) }
if (!isAssociatedCompilation) {
val missingRequiredSourceSets = requiredButNotVisible.filter { missingSourceSet ->
@@ -9,7 +9,6 @@ import org.jetbrains.kotlin.commonizer.SharedCommonizerTarget
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.associateWithClosure
import org.jetbrains.kotlin.gradle.plugin.sources.internal
import org.jetbrains.kotlin.gradle.targets.native.internal.CInteropIdentifier.Scope
import org.jetbrains.kotlin.tooling.core.UnsafeApi
@@ -58,7 +57,7 @@ internal fun CInteropCommonizerDependent.Factory.from(
This relationship should not be declared, but we try to be lenient towards it here.
*/
val filteredCompilations = compilations.filter { compilation ->
compilation.associateWithClosure.none { associateCompilation -> associateCompilation in compilations }
compilation.allAssociatedCompilations.none { associatedCompilation -> associatedCompilation in compilations }
}.ifEmpty { return null }.toSet()
val scopes: Set<Scope> = filteredCompilations
@@ -92,7 +91,7 @@ internal suspend fun CInteropCommonizerDependent.Factory.fromAssociateCompilatio
target = sourceSet.commonizerTarget.await() as? SharedCommonizerTarget ?: return null,
compilations = sourceSet.internal.compilations
.filterIsInstance<KotlinNativeCompilation>()
.flatMap { compilation -> compilation.associateWithClosure }
.flatMap { compilation -> compilation.allAssociatedCompilations }
.filterIsInstance<KotlinNativeCompilation>()
.toSet()
)
@@ -76,7 +76,7 @@ internal fun Project.getPlatformCinteropDependenciesOrEmpty(
/* Participating in multiple compilations? -> can't propagate -> should be commonized */
val compilation = compilations.singleOrNull() as? KotlinNativeCompilation ?: return@files emptySet<File>()
(compilation.associateWith + compilation)
(compilation.associatedCompilations + compilation)
.filterIsInstance<KotlinNativeCompilation>()
.filter(compilationFilter)
.map { relevantCompilation -> getAllCInteropOutputFiles(relevantCompilation) }
@@ -45,7 +45,7 @@ open class NativePerformanceReport : DefaultTask() {
// Get compile task and associated with it other compile tasks.
private fun getAllExecutedTasks(compilation: KotlinCompilation<*>): List<Task> {
val tasks = mutableListOf(compilation.compileKotlinTask as Task)
compilation.associateWith.forEach {
compilation.associatedCompilations.toList().forEach {
tasks += getAllExecutedTasks(it)
}
return tasks
@@ -24,7 +24,6 @@ import org.jetbrains.kotlin.gradle.plugin.PropertiesProvider.Companion.kotlinPro
import org.jetbrains.kotlin.gradle.plugin.internal.BuildIdService
import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinJvmAndroidCompilation
import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinMetadataTarget
import org.jetbrains.kotlin.gradle.plugin.mpp.associateWithClosure
import org.jetbrains.kotlin.gradle.plugin.mpp.internal
import org.jetbrains.kotlin.gradle.report.BuildMetricsService
import org.jetbrains.kotlin.gradle.tasks.AbstractKotlinCompile
@@ -127,7 +126,7 @@ internal abstract class AbstractKotlinCompileConfig<TASK : AbstractKotlinCompile
task.friendPaths.from({ compilationInfo.friendPaths })
compilationInfo.tcsOrNull?.compilation?.let { compilation ->
task.friendSourceSets
.value(providers.provider { compilation.associateWithClosure.map { it.name } })
.value(providers.provider { compilation.allAssociatedCompilations.map { it.name } })
.disallowChanges()
task.pluginClasspath.from(
compilation.internal.configurations.pluginConfiguration
@@ -107,7 +107,7 @@ class ExternalKotlinTargetApiTests {
}
auxCompilation.associateWith(mainCompilation)
assertEquals(setOf(mainCompilation), auxCompilation.associateWith.toSet())
assertEquals(setOf(mainCompilation), auxCompilation.associatedCompilations.toSet())
}
@Test