From 84fb045d8a508af6049218740c6de58fbd1f222c Mon Sep 17 00:00:00 2001 From: Dmitry Savvinov Date: Mon, 27 Mar 2023 16:40:32 +0200 Subject: [PATCH] [Gradle] Migrate warning about pre-1.3 MPP plugins --- .../jetbrains/kotlin/gradle/MultiplatformGradleIT.kt | 12 +++++++----- .../gradle/plugin/KotlinMultiplatformPlugin.kt | 11 +++-------- .../plugin/diagnostics/KotlinToolingDiagnostics.kt | 10 ++++++++++ .../gradle/internals/ExposedForIntegrationTests.kt | 5 +---- 4 files changed, 21 insertions(+), 17 deletions(-) diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/MultiplatformGradleIT.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/MultiplatformGradleIT.kt index 5cdc4379cc6..86282a12ee0 100644 --- a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/MultiplatformGradleIT.kt +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/MultiplatformGradleIT.kt @@ -19,11 +19,13 @@ package org.jetbrains.kotlin.gradle import com.intellij.testFramework.TestDataPath import org.gradle.api.logging.LogLevel import org.gradle.util.GradleVersion -import org.jetbrains.kotlin.gradle.internals.KOTLIN_12X_MPP_DEPRECATION_WARNING import org.jetbrains.kotlin.gradle.plugin.EXPECTED_BY_CONFIG_NAME import org.jetbrains.kotlin.gradle.plugin.IMPLEMENT_CONFIG_NAME import org.jetbrains.kotlin.gradle.plugin.IMPLEMENT_DEPRECATION_WARNING +import org.jetbrains.kotlin.gradle.plugin.diagnostics.KotlinToolingDiagnostics import org.jetbrains.kotlin.gradle.testbase.TestVersions +import org.jetbrains.kotlin.gradle.testbase.assertHasDiagnostic +import org.jetbrains.kotlin.gradle.testbase.assertNoDiagnostic import org.jetbrains.kotlin.gradle.util.AGPVersion import org.jetbrains.kotlin.gradle.util.getFileByName import org.jetbrains.kotlin.gradle.util.modify @@ -43,7 +45,7 @@ class MultiplatformGradleIT : BaseGradleIT() { project.build("build") { assertSuccessful() - assertContains(KOTLIN_12X_MPP_DEPRECATION_WARNING) + assertHasDiagnostic(KotlinToolingDiagnostics.Kotlin12XMppDeprecation) assertTasksExecuted( ":lib:compileKotlinCommon", @@ -61,7 +63,7 @@ class MultiplatformGradleIT : BaseGradleIT() { project.build { assertSuccessful() - assertNotContains(KOTLIN_12X_MPP_DEPRECATION_WARNING) + assertNoDiagnostic(KotlinToolingDiagnostics.Kotlin12XMppDeprecation) } } @@ -287,7 +289,7 @@ class MultiplatformGradleIT : BaseGradleIT() { "actual fun foo(): String = \"jvm\"" to "libJvm/src/$sourceSetName/kotlin", ).forEach { (code, path) -> File(projectDir, path).run { - mkdirs(); + mkdirs() File(this, "Foo.kt").writeText(code) } } @@ -367,4 +369,4 @@ class MultiplatformGradleIT : BaseGradleIT() { assertTasksExecuted(":lib1:compileDebugKotlin") } } -} \ No newline at end of file +} diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/KotlinMultiplatformPlugin.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/KotlinMultiplatformPlugin.kt index 783477cd7f9..72a1ac43c19 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/KotlinMultiplatformPlugin.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/KotlinMultiplatformPlugin.kt @@ -23,9 +23,10 @@ import org.gradle.api.file.SourceDirectorySet import org.gradle.api.tasks.SourceSet import org.jetbrains.kotlin.gradle.dsl.kotlinExtension import org.jetbrains.kotlin.gradle.logging.kotlinWarn +import org.jetbrains.kotlin.gradle.plugin.diagnostics.KotlinToolingDiagnostics +import org.jetbrains.kotlin.gradle.plugin.diagnostics.reportDiagnosticOncePerBuild import org.jetbrains.kotlin.gradle.plugin.internal.JavaSourceSetsAccessor import org.jetbrains.kotlin.gradle.tasks.AbstractKotlinCompile -import org.jetbrains.kotlin.gradle.utils.SingleWarningPerBuild import org.jetbrains.kotlin.gradle.utils.androidPluginIds import org.jetbrains.kotlin.gradle.utils.getOrPut import java.util.concurrent.atomic.AtomicBoolean @@ -241,16 +242,10 @@ internal fun Project.whenEvaluated(fn: Project.() -> T) { } } -internal val KOTLIN_12X_MPP_DEPRECATION_WARNING = "\n" + """ - The 'org.jetbrains.kotlin.platform.*' plugins are deprecated and will no longer be available in Kotlin 1.4. - Please migrate the project to the 'org.jetbrains.kotlin.multiplatform' plugin. - See: https://kotlinlang.org/docs/reference/building-mpp-with-gradle.html - """.trimIndent() - private const val KOTLIN_12X_MPP_DEPRECATION_SUPPRESS_FLAG = "kotlin.internal.mpp12x.deprecation.suppress" internal fun warnAboutKotlin12xMppDeprecation(project: Project) { if (project.findProperty(KOTLIN_12X_MPP_DEPRECATION_SUPPRESS_FLAG) != "true") { - SingleWarningPerBuild.show(project, KOTLIN_12X_MPP_DEPRECATION_WARNING) + project.reportDiagnosticOncePerBuild(KotlinToolingDiagnostics.Kotlin12XMppDeprecation()) } } 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 c0425658693..8b7e8e441de 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 @@ -210,4 +210,14 @@ object KotlinToolingDiagnostics { "Available values: prebuilt, light" ) } + + object Kotlin12XMppDeprecation : ToolingDiagnosticFactory(WARNING) { + operator fun invoke() = build( + """ + The 'org.jetbrains.kotlin.platform.*' plugins are deprecated and will no longer be available in Kotlin 1.4. + Please migrate the project to the 'org.jetbrains.kotlin.multiplatform' plugin. + See: https://kotlinlang.org/docs/reference/building-mpp-with-gradle.html + """.trimIndent() + ) + } } diff --git a/libraries/tools/kotlin-gradle-plugin/src/test/kotlin/org/jetbrains/kotlin/gradle/internals/ExposedForIntegrationTests.kt b/libraries/tools/kotlin-gradle-plugin/src/test/kotlin/org/jetbrains/kotlin/gradle/internals/ExposedForIntegrationTests.kt index 8d3513e5823..84245ea911f 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/test/kotlin/org/jetbrains/kotlin/gradle/internals/ExposedForIntegrationTests.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/test/kotlin/org/jetbrains/kotlin/gradle/internals/ExposedForIntegrationTests.kt @@ -5,14 +5,13 @@ package org.jetbrains.kotlin.gradle.internals -import org.jetbrains.kotlin.gradle.plugin.KOTLIN_12X_MPP_DEPRECATION_WARNING import org.jetbrains.kotlin.gradle.plugin.diagnostics.DIAGNOSTIC_SEPARATOR import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinProjectStructureMetadata import org.jetbrains.kotlin.gradle.plugin.mpp.MULTIPLATFORM_PROJECT_METADATA_JSON_FILE_NAME import org.jetbrains.kotlin.gradle.plugin.mpp.parseKotlinSourceSetMetadataFromJson import org.jetbrains.kotlin.gradle.targets.native.DisabledNativeTargetsReporter -fun parseKotlinSourceSetMetadataFromJson(json: String): KotlinProjectStructureMetadata? = parseKotlinSourceSetMetadataFromJson(json) +fun parseKotlinSourceSetMetadataFromJson(json: String): KotlinProjectStructureMetadata = parseKotlinSourceSetMetadataFromJson(json) const val MULTIPLATFORM_PROJECT_METADATA_JSON_FILE_NAME = MULTIPLATFORM_PROJECT_METADATA_JSON_FILE_NAME @@ -20,6 +19,4 @@ const val DISABLED_NATIVE_TARGETS_REPORTER_DISABLE_WARNING_PROPERTY_NAME = Disab const val DISABLED_NATIVE_TARGETS_REPORTER_WARNING_PREFIX: String = DisabledNativeTargetsReporter.WARNING_PREFIX -val KOTLIN_12X_MPP_DEPRECATION_WARNING = KOTLIN_12X_MPP_DEPRECATION_WARNING - const val VERBOSE_DIAGNOSTIC_SEPARATOR = DIAGNOSTIC_SEPARATOR