[Gradle] Deprecate access to `defaultConfigurationName` getter
Targets default configurations have no use in Kotlin Gradle Plugin.
KT-55201 Verification Pending
diff --git a/libraries/tools/kotlin-gradle-plugin-api/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/KotlinTarget.kt b/libraries/tools/kotlin-gradle-plugin-api/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/KotlinTarget.kt
index 47a0c2a..b1c0dc0 100644
--- a/libraries/tools/kotlin-gradle-plugin-api/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/KotlinTarget.kt
+++ b/libraries/tools/kotlin-gradle-plugin-api/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/KotlinTarget.kt
@@ -36,6 +36,7 @@
val artifactsTaskName: String
+ @Deprecated("Scheduled for removal with Kotlin 2.0", level = DeprecationLevel.ERROR)
val defaultConfigurationName: String
val apiElementsConfigurationName: String
val runtimeElementsConfigurationName: String
diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/diagnostics/KotlinToolingDiagnostics.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/diagnostics/KotlinToolingDiagnostics.kt
index 5634634..c769f02 100644
--- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/diagnostics/KotlinToolingDiagnostics.kt
+++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/diagnostics/KotlinToolingDiagnostics.kt
@@ -6,11 +6,14 @@
package org.jetbrains.kotlin.gradle.plugin.diagnostics
import org.jetbrains.kotlin.gradle.InternalKotlinGradlePluginApi
+import org.jetbrains.kotlin.gradle.plugin.KotlinTarget
import org.jetbrains.kotlin.gradle.plugin.PropertiesProvider
import org.jetbrains.kotlin.gradle.plugin.diagnostics.ToolingDiagnostic.Severity.ERROR
import org.jetbrains.kotlin.gradle.plugin.diagnostics.ToolingDiagnostic.Severity.WARNING
+import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinWithJavaTarget
import org.jetbrains.kotlin.gradle.plugin.sources.android.multiplatformAndroidSourceSetLayoutV1
import org.jetbrains.kotlin.gradle.plugin.sources.android.multiplatformAndroidSourceSetLayoutV2
+import org.jetbrains.kotlin.gradle.targets.jvm.KotlinJvmTarget
@InternalKotlinGradlePluginApi // used in integration tests
object KotlinToolingDiagnostics {
@@ -178,4 +181,19 @@
""".trimIndent()
)
}
+
+ object KT55201DefaultTargetConfigurationNameAccess : ToolingDiagnosticFactory(ERROR) {
+ fun reportForTarget(target: KotlinTarget) {
+ val project = target.project
+ val diagnosticMessage = "`defaultConfigurationName` property of '${target.name}' Kotlin Target is not used " +
+ "in Kotlin Gradle Plugin and will be removed in Kotlin 2.0."
+ val diagnostic = when(target) {
+ is KotlinWithJavaTarget<*, *> -> build("$diagnosticMessage\nUse `Dependency.DEFAULT_CONFIGURATION` instead.")
+ is KotlinJvmTarget -> build("$diagnosticMessage\nUse `Dependency.DEFAULT_CONFIGURATION` instead.")
+ else -> build(diagnosticMessage)
+ }
+
+ project.kotlinToolingDiagnosticsCollector.report(project, diagnostic)
+ }
+ }
}
diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/AbstractKotlinTarget.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/AbstractKotlinTarget.kt
index 98bb041..5ea1fe4 100644
--- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/AbstractKotlinTarget.kt
+++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/AbstractKotlinTarget.kt
@@ -21,6 +21,7 @@
import org.jetbrains.kotlin.gradle.dsl.KotlinMultiplatformExtension
import org.jetbrains.kotlin.gradle.dsl.kotlinExtension
import org.jetbrains.kotlin.gradle.plugin.*
+import org.jetbrains.kotlin.gradle.plugin.diagnostics.KotlinToolingDiagnostics
import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinUsageContext.MavenScope.*
import org.jetbrains.kotlin.gradle.utils.dashSeparatedName
import org.jetbrains.kotlin.gradle.utils.lowerCamelCaseName
@@ -41,8 +42,12 @@
override fun getAttributes(): AttributeContainer = attributeContainer
+ @Deprecated("Scheduled for removal with Kotlin 2.0", level = DeprecationLevel.ERROR)
override val defaultConfigurationName: String
- get() = disambiguateName("default")
+ get() {
+ KotlinToolingDiagnostics.KT55201DefaultTargetConfigurationNameAccess.reportForTarget(this)
+ return disambiguateName("default")
+ }
@Deprecated("Scheduled for removal with Kotlin 2.2")
override var useDisambiguationClassifierAsSourceSetNamePrefix: Boolean = true
diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/KotlinMultiplatformPlugin.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/KotlinMultiplatformPlugin.kt
index 79581b1..edb3990 100644
--- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/KotlinMultiplatformPlugin.kt
+++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/KotlinMultiplatformPlugin.kt
@@ -227,12 +227,6 @@
}
}.toMutableList()
- val mainCompilation = target.compilations.findByName(KotlinCompilation.MAIN_COMPILATION_NAME)
- val defaultTargetConfiguration = project.configurations.findByName(target.defaultConfigurationName)
- if (mainCompilation != null && defaultTargetConfiguration != null) {
- outputConfigurationsWithCompilations += defaultTargetConfiguration to mainCompilation
- }
-
// Add usages of android library when its variants are grouped by flavor
outputConfigurationsWithCompilations += target.kotlinComponents
.filterIsInstance<JointAndroidKotlinTargetComponent>()
diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/external/ExternalKotlinTargetImpl.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/external/ExternalKotlinTargetImpl.kt
index c5ef86b..7e923e6 100644
--- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/external/ExternalKotlinTargetImpl.kt
+++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/external/ExternalKotlinTargetImpl.kt
@@ -17,6 +17,7 @@
import org.jetbrains.kotlin.gradle.dsl.multiplatformExtension
import org.jetbrains.kotlin.gradle.plugin.KotlinPlatformType
import org.jetbrains.kotlin.gradle.plugin.KotlinTargetComponent
+import org.jetbrains.kotlin.gradle.plugin.diagnostics.KotlinToolingDiagnostics
import org.jetbrains.kotlin.gradle.plugin.mpp.HierarchyAttributeContainer
import org.jetbrains.kotlin.gradle.plugin.mpp.InternalKotlinTarget
import org.jetbrains.kotlin.tooling.core.MutableExtras
@@ -27,6 +28,7 @@
override val targetName: String,
override val platformType: KotlinPlatformType,
override val publishable: Boolean,
+ @Deprecated("Scheduled for removal with Kotlin 2.0")
val defaultConfiguration: Configuration,
val apiElementsConfiguration: Configuration,
val runtimeElementsConfiguration: Configuration,
@@ -67,8 +69,13 @@
override val artifactsTaskName: String
get() = artifactsTask.name
+ @Deprecated("Scheduled for removal with Kotlin 2.0", level = DeprecationLevel.ERROR)
override val defaultConfigurationName: String
- get() = defaultConfiguration.name
+ get() {
+ KotlinToolingDiagnostics.KT55201DefaultTargetConfigurationNameAccess.reportForTarget(this)
+ @Suppress("DEPRECATION")
+ return defaultConfiguration.name
+ }
override val apiElementsConfigurationName: String
get() = apiElementsConfiguration.name
diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/mppDependencyRewritingUtils.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/mppDependencyRewritingUtils.kt
index 7e12f18..98acd44 100644
--- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/mppDependencyRewritingUtils.kt
+++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/mppDependencyRewritingUtils.kt
@@ -222,7 +222,6 @@
@Suppress("DEPRECATION")
configurationName in compilation.relatedConfigurationNames ||
configurationName == compilation.target.apiElementsConfigurationName ||
- configurationName == compilation.target.runtimeElementsConfigurationName ||
- configurationName == compilation.target.defaultConfigurationName
+ configurationName == compilation.target.runtimeElementsConfigurationName
}
}
\ No newline at end of file
diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/jvm/KotlinWithJavaTarget.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/jvm/KotlinWithJavaTarget.kt
index 26fa706..39c1957 100644
--- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/jvm/KotlinWithJavaTarget.kt
+++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/jvm/KotlinWithJavaTarget.kt
@@ -17,6 +17,7 @@
import org.jetbrains.kotlin.gradle.dsl.*
import org.jetbrains.kotlin.gradle.plugin.HasCompilerOptions
import org.jetbrains.kotlin.gradle.plugin.KotlinPlatformType
+import org.jetbrains.kotlin.gradle.plugin.diagnostics.KotlinToolingDiagnostics
import org.jetbrains.kotlin.gradle.plugin.internal.JavaSourceSetsAccessor
import org.jetbrains.kotlin.gradle.plugin.variantImplementationFactory
import org.jetbrains.kotlin.gradle.tasks.KOTLIN_BUILD_DIR_NAME
@@ -33,8 +34,16 @@
override var disambiguationClassifier: String? = null
internal set
+ @Deprecated(
+ "Scheduled for removal with Kotlin 2.0",
+ level = DeprecationLevel.ERROR,
+ replaceWith = ReplaceWith("Dependency.DEFAULT_CONFIGURATION")
+ )
override val defaultConfigurationName: String
- get() = Dependency.DEFAULT_CONFIGURATION
+ get() {
+ KotlinToolingDiagnostics.KT55201DefaultTargetConfigurationNameAccess.reportForTarget(this)
+ return Dependency.DEFAULT_CONFIGURATION
+ }
override val apiElementsConfigurationName: String
get() = JavaPlugin.API_ELEMENTS_CONFIGURATION_NAME
diff --git a/libraries/tools/kotlin-gradle-plugin/src/functionalTest/kotlin/org/jetbrains/kotlin/gradle/unitTests/diagnosticsTests/MppDiagnosticsFunctionalTest.kt b/libraries/tools/kotlin-gradle-plugin/src/functionalTest/kotlin/org/jetbrains/kotlin/gradle/unitTests/diagnosticsTests/MppDiagnosticsFunctionalTest.kt
index 00115c6..0537a0b 100644
--- a/libraries/tools/kotlin-gradle-plugin/src/functionalTest/kotlin/org/jetbrains/kotlin/gradle/unitTests/diagnosticsTests/MppDiagnosticsFunctionalTest.kt
+++ b/libraries/tools/kotlin-gradle-plugin/src/functionalTest/kotlin/org/jetbrains/kotlin/gradle/unitTests/diagnosticsTests/MppDiagnosticsFunctionalTest.kt
@@ -122,4 +122,16 @@
}
}
}
+
+ @Test
+ fun testKT55201DefaultTargetConfigurationNameAccess() {
+ checkDiagnosticsWithMppProject("kt55201DefaultTargetConfigurationNameAccess") {
+ kotlin {
+ listOf(jvm(), linuxX64()).forEach {
+ @Suppress("DEPRECATION_ERROR")
+ it.defaultConfigurationName
+ }
+ }
+ }
+ }
}
diff --git a/libraries/tools/kotlin-gradle-plugin/src/functionalTest/resources/expectedDiagnostics/kt55201DefaultTargetConfigurationNameAccess.txt b/libraries/tools/kotlin-gradle-plugin/src/functionalTest/resources/expectedDiagnostics/kt55201DefaultTargetConfigurationNameAccess.txt
new file mode 100644
index 0000000..11c3ce1
--- /dev/null
+++ b/libraries/tools/kotlin-gradle-plugin/src/functionalTest/resources/expectedDiagnostics/kt55201DefaultTargetConfigurationNameAccess.txt
@@ -0,0 +1,4 @@
+[KT55201DefaultTargetConfigurationNameAccess | ERROR] `defaultConfigurationName` property of 'jvm' Kotlin Target is not used in Kotlin Gradle Plugin and will be removed in Kotlin 2.0.
+Use `Dependency.DEFAULT_CONFIGURATION` instead.
+----
+[KT55201DefaultTargetConfigurationNameAccess | ERROR] `defaultConfigurationName` property of 'linuxX64' Kotlin Target is not used in Kotlin Gradle Plugin and will be removed in Kotlin 2.0.