[Gradle] Add KotlinCompilationSourceDeprecation diagnostic

^KT-58235 Verification Pending
This commit is contained in:
Anton Lakotka
2023-07-18 08:56:55 +02:00
committed by Space Team
parent 245825cf8b
commit c3b09e148b
4 changed files with 30 additions and 0 deletions
@@ -548,6 +548,18 @@ object KotlinToolingDiagnostics {
""".trimIndent()
)
}
object KotlinCompilationSourceDeprecation : ToolingDiagnosticFactory(ERROR) {
operator fun invoke(trace: Throwable?) = build(
"""
`KotlinCompilation.source(KotlinSourceSet)` method is deprecated
and will be removed in upcoming Kotlin releases.
See https://kotl.in/compilation-source-deprecation for details.
""".trimIndent(),
throwable = trace,
)
}
}
private fun String.indentLines(nSpaces: Int = 4, skipFirstLine: Boolean = true): String {
@@ -15,6 +15,8 @@ import org.gradle.api.tasks.TaskProvider
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.diagnostics.KotlinToolingDiagnostics.KotlinCompilationSourceDeprecation
import org.jetbrains.kotlin.gradle.plugin.diagnostics.kotlinToolingDiagnosticsCollector
import org.jetbrains.kotlin.gradle.plugin.mpp.HierarchyAttributeContainer
import org.jetbrains.kotlin.gradle.plugin.mpp.InternalKotlinCompilation
import org.jetbrains.kotlin.gradle.plugin.mpp.internal
@@ -91,6 +93,7 @@ internal class KotlinCompilationImpl constructor(
@Deprecated("scheduled for removal with Kotlin 2.0", level = DeprecationLevel.ERROR)
override fun source(sourceSet: KotlinSourceSet) {
project.kotlinToolingDiagnosticsCollector.report(project, KotlinCompilationSourceDeprecation(Throwable()))
sourceSets.source(sourceSet)
}
@@ -106,4 +106,15 @@ class MppDiagnosticsFunctionalTest {
kotlin { }
}
}
@Test
fun testKotlinCompilationSourceDeprecation() {
checkDiagnosticsWithMppProject("kotlinCompilationSourceDeprecation") {
kotlin {
val customMain = sourceSets.create("customMain")
@Suppress("DEPRECATION_ERROR")
jvm().compilations.create("custom").source(customMain)
}
}
}
}
@@ -0,0 +1,4 @@
[KotlinCompilationSourceDeprecation | ERROR] `KotlinCompilation.source(KotlinSourceSet)` method is deprecated
and will be removed in upcoming Kotlin releases.
See https://kotl.in/compilation-source-deprecation for details.