[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.