From 245825cf8b76cdae9ad6f83f3a0385a988feab63 Mon Sep 17 00:00:00 2001 From: Anton Lakotka Date: Fri, 14 Jul 2023 16:08:17 +0200 Subject: [PATCH] [Gradle] Elevate KotlinCompilation.source deprecation to ERROR Fix internal use of this API with dedicated internal function. ^KT-58234 Verification Pending --- .../kotlin/gradle/plugin/KotlinCompilation.kt | 2 +- .../kotlin/gradle/plugin/AbstractKotlinPlugin.kt | 6 ++---- .../gradle/plugin/KotlinTargetConfigurator.kt | 2 +- .../plugin/mpp/InternalKotlinCompilation.kt | 7 ++++++- .../mpp/compilationImpl/KotlinCompilationImpl.kt | 11 +++++------ .../targets/android/AndroidProjectHandler.kt | 15 ++++++++------- .../targets/js/KotlinJsTargetConfigurator.kt | 4 ++-- .../metadata/KotlinMetadataTargetConfigurator.kt | 2 +- .../metadata/KotlinMetadataTargetPreset.kt | 3 +-- .../unitTests/SourceSetCommonizerTargetTest.kt | 2 +- 10 files changed, 28 insertions(+), 26 deletions(-) diff --git a/libraries/tools/kotlin-gradle-plugin-api/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/KotlinCompilation.kt b/libraries/tools/kotlin-gradle-plugin-api/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/KotlinCompilation.kt index d0840da8f70..a9c20c890af 100644 --- a/libraries/tools/kotlin-gradle-plugin-api/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/KotlinCompilation.kt +++ b/libraries/tools/kotlin-gradle-plugin-api/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/KotlinCompilation.kt @@ -131,7 +131,7 @@ interface KotlinCompilation : Named, * Further details: * https://kotl.in/compilation-source-deprecation */ - @Deprecated("scheduled for removal with Kotlin 2.0") + @Deprecated("scheduled for removal with Kotlin 2.0", level = DeprecationLevel.ERROR) fun source(sourceSet: KotlinSourceSet) fun associateWith(other: KotlinCompilation<*>) diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/AbstractKotlinPlugin.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/AbstractKotlinPlugin.kt index f68e69f4b7e..b36300bf6b9 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/AbstractKotlinPlugin.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/AbstractKotlinPlugin.kt @@ -194,8 +194,7 @@ internal abstract class AbstractKotlinPlugin( javaSourceSet.resources.setSrcDirs( listOf { kotlinSourceSet.resources.sourceDirectories } ) - @Suppress("DEPRECATION") - kotlinCompilation.source(kotlinSourceSet) + kotlinCompilation.addSourceSet(kotlinSourceSet) project.compatibilityConventionRegistrar.addConvention(javaSourceSet, kotlinSourceSetDslName, kotlinSourceSet) javaSourceSet.addExtension(kotlinSourceSetDslName, kotlinSourceSet.kotlin) } else { @@ -205,8 +204,7 @@ internal abstract class AbstractKotlinPlugin( } kotlinTarget.compilations.all { kotlinCompilation -> - @Suppress("DEPRECATION") - kotlinCompilation.source(kotlinCompilation.defaultSourceSet) + kotlinCompilation.addSourceSet(kotlinCompilation.defaultSourceSet) } kotlinTarget.compilations.run { 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 6fc0c37bb1e..0ce71b00674 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 @@ -100,7 +100,7 @@ abstract class AbstractKotlinTargetConfigurator override fun configureSourceSet(target: KotlinTargetType) { target.compilations.all { compilation -> - compilation.source(compilation.defaultSourceSet) // also adds dependencies, requires the configurations for target and source set to exist at this point + compilation.addSourceSet(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/InternalKotlinCompilation.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/InternalKotlinCompilation.kt index 4760a2a450f..c48790c5382 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/InternalKotlinCompilation.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/InternalKotlinCompilation.kt @@ -12,6 +12,7 @@ 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 @@ -22,6 +23,7 @@ internal interface InternalKotlinCompilation : Kotl val configurations: KotlinCompilationConfigurationsContainer val friendPaths: Iterable val processResourcesTaskName: String? + val sourceSets: KotlinCompilationSourceSetsContainer } internal val KotlinCompilation.internal: InternalKotlinCompilation @@ -32,4 +34,7 @@ internal val KotlinCompilation.internal: InternalKo internal suspend fun InternalKotlinCompilation<*>.awaitAllKotlinSourceSets(): Set { KotlinPluginLifecycle.Stage.AfterFinaliseCompilations.await() return allKotlinSourceSets -} \ No newline at end of file +} + +internal fun KotlinCompilation<*>.addSourceSet(kotlinSourceSet: KotlinSourceSet) = + internal.sourceSets.source(kotlinSourceSet) \ No newline at end of file diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/compilationImpl/KotlinCompilationImpl.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/compilationImpl/KotlinCompilationImpl.kt index 2ed139e0bca..9c7ab69b3ec 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/compilationImpl/KotlinCompilationImpl.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/compilationImpl/KotlinCompilationImpl.kt @@ -11,14 +11,13 @@ import org.gradle.api.Action import org.gradle.api.GradleException import org.gradle.api.attributes.AttributeContainer import org.gradle.api.file.FileCollection -import org.gradle.api.file.SourceDirectorySet import org.gradle.api.tasks.TaskProvider -import org.jetbrains.kotlin.gradle.dsl.* +import org.jetbrains.kotlin.gradle.dsl.KotlinCommonOptions +import org.jetbrains.kotlin.gradle.dsl.KotlinCompile import org.jetbrains.kotlin.gradle.plugin.* -import org.jetbrains.kotlin.gradle.plugin.mpp.* +import org.jetbrains.kotlin.gradle.plugin.mpp.HierarchyAttributeContainer import org.jetbrains.kotlin.gradle.plugin.mpp.InternalKotlinCompilation import org.jetbrains.kotlin.gradle.plugin.mpp.internal -import org.jetbrains.kotlin.gradle.plugin.mpp.moduleNameForCompilation import org.jetbrains.kotlin.gradle.tasks.KotlinCompilationTask import org.jetbrains.kotlin.gradle.tasks.locateTask import org.jetbrains.kotlin.gradle.utils.ObservableSet @@ -58,7 +57,7 @@ internal class KotlinCompilationImpl constructor( override val extras: MutableExtras = mutableExtrasOf() - val sourceSets get() = params.sourceSets + override val sourceSets get() = params.sourceSets override val configurations: KotlinCompilationConfigurationsContainer get() = params.dependencyConfigurations @@ -90,7 +89,7 @@ internal class KotlinCompilationImpl constructor( override val kotlinSourceSets: ObservableSet get() = sourceSets.kotlinSourceSets - @Deprecated("scheduled for removal with Kotlin 2.0") + @Deprecated("scheduled for removal with Kotlin 2.0", level = DeprecationLevel.ERROR) override fun source(sourceSet: KotlinSourceSet) { sourceSets.source(sourceSet) } diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/android/AndroidProjectHandler.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/android/AndroidProjectHandler.kt index fd263ff6c47..c0f248c534f 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/android/AndroidProjectHandler.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/android/AndroidProjectHandler.kt @@ -7,7 +7,8 @@ package org.jetbrains.kotlin.gradle.plugin import com.android.build.api.attributes.BuildTypeAttr -import com.android.build.gradle.* +import com.android.build.gradle.BaseExtension +import com.android.build.gradle.BasePlugin import com.android.build.gradle.api.* import org.gradle.api.InvalidUserCodeException import org.gradle.api.NamedDomainObjectCollection @@ -25,14 +26,16 @@ import org.gradle.api.tasks.TaskProvider import org.gradle.api.tasks.bundling.AbstractArchiveTask import org.gradle.api.tasks.compile.AbstractCompile import org.gradle.api.tasks.compile.JavaCompile -import org.jetbrains.kotlin.gradle.dsl.* -import org.jetbrains.kotlin.gradle.internal.* +import org.jetbrains.kotlin.gradle.dsl.KotlinJvmCompilerOptions +import org.jetbrains.kotlin.gradle.dsl.kotlinExtension +import org.jetbrains.kotlin.gradle.internal.Kapt3GradleSubplugin import org.jetbrains.kotlin.gradle.internal.checkAndroidAnnotationProcessorDependencyUsage import org.jetbrains.kotlin.gradle.logging.kotlinDebug import org.jetbrains.kotlin.gradle.plugin.android.AndroidGradleWrapper import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinAndroidTarget import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinJvmAndroidCompilation import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinJvmAndroidCompilationFactory +import org.jetbrains.kotlin.gradle.plugin.mpp.addSourceSet import org.jetbrains.kotlin.gradle.plugin.sources.android.KotlinAndroidSourceSets.applyKotlinAndroidSourceSetLayout import org.jetbrains.kotlin.gradle.plugin.sources.android.findKotlinSourceSet import org.jetbrains.kotlin.gradle.tasks.KotlinCompile @@ -203,12 +206,10 @@ internal class AndroidProjectHandler( } // Register the source only after the task is created, because the task is required for that: - @Suppress("DEPRECATION") - compilation.source(defaultSourceSet) + compilation.addSourceSet(defaultSourceSet) compilation.androidVariant.forEachKotlinSourceSet(project) { kotlinSourceSet -> - @Suppress("DEPRECATION") - compilation.source(kotlinSourceSet) + compilation.addSourceSet(kotlinSourceSet) } } diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/js/KotlinJsTargetConfigurator.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/js/KotlinJsTargetConfigurator.kt index 2c4a8c9d93d..bb88646e98b 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/js/KotlinJsTargetConfigurator.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/js/KotlinJsTargetConfigurator.kt @@ -12,6 +12,7 @@ import org.gradle.language.base.plugins.LifecycleBasePlugin import org.jetbrains.kotlin.gradle.plugin.* import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinJsCompilation import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinUsages +import org.jetbrains.kotlin.gradle.plugin.mpp.addSourceSet import org.jetbrains.kotlin.gradle.tasks.KotlinTasksProvider import org.jetbrains.kotlin.gradle.tasks.locateTask import org.jetbrains.kotlin.gradle.tasks.registerTask @@ -61,8 +62,7 @@ open class KotlinJsTargetConfigurator : val project = target.project target.compilations.all { compilation -> - @Suppress("DEPRECATION") - compilation.source(compilation.defaultSourceSet) + compilation.addSourceSet(compilation.defaultSourceSet) configureResourceProcessing( compilation, diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/metadata/KotlinMetadataTargetConfigurator.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/metadata/KotlinMetadataTargetConfigurator.kt index 15916e58802..67b55fc6521 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/metadata/KotlinMetadataTargetConfigurator.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/metadata/KotlinMetadataTargetConfigurator.kt @@ -79,7 +79,7 @@ class KotlinMetadataTargetConfigurator : // it isn't necessary for KLib compilations // see [KotlinCompilationSourceSetInclusion.AddSourcesWithoutDependsOnClosure] defaultSourceSet.internal.dependsOnClosure.forAll { - source(it) + addSourceSet(it) } } else { // Clear the dependencies of the compilation so that they don't take time resolving during task graph construction: 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 32cc111d633..ad902cf205d 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 @@ -54,8 +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.source(commonMainSourceSet) + mainCompilation.addSourceSet(commonMainSourceSet) project.whenEvaluated { // Since there's no default source set, apply language settings from commonMain: diff --git a/libraries/tools/kotlin-gradle-plugin/src/functionalTest/kotlin/org/jetbrains/kotlin/gradle/unitTests/SourceSetCommonizerTargetTest.kt b/libraries/tools/kotlin-gradle-plugin/src/functionalTest/kotlin/org/jetbrains/kotlin/gradle/unitTests/SourceSetCommonizerTargetTest.kt index 58bed7c5f7d..a1033fb4995 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/functionalTest/kotlin/org/jetbrains/kotlin/gradle/unitTests/SourceSetCommonizerTargetTest.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/functionalTest/kotlin/org/jetbrains/kotlin/gradle/unitTests/SourceSetCommonizerTargetTest.kt @@ -217,7 +217,7 @@ class SourceSetCommonizerTargetTest { val nativeMain = kotlin.sourceSets.create("nativeMain") listOf(linux1, linux2).forEach { target -> - @Suppress("DEPRECATION") + @Suppress("DEPRECATION_ERROR") target.compilations.getByName("main").source(nativeMain) }