From 8a5433734becbc888fdf8afda8b1d36fdaf04ac9 Mon Sep 17 00:00:00 2001 From: Dmitry Savvinov Date: Wed, 3 May 2023 09:53:31 +0100 Subject: [PATCH] [Gradle] Migrate K2-usage warning --- .../kotlin/gradle/experimental/TryK2IT.kt | 6 +++--- .../gradle/plugin/KotlinPluginWrapper.kt | 2 -- .../diagnostics/KotlinGradleProjectChecker.kt | 3 ++- .../diagnostics/KotlinToolingDiagnostics.kt | 9 +++++++++ .../KotlinToolingDiagnosticsCollector.kt | 17 ++++++---------- .../checkers/ExperimentalK2UsageChecker.kt | 20 +++++++++++++++++++ .../gradle/utils/experimentalConifguration.kt | 12 ----------- 7 files changed, 40 insertions(+), 29 deletions(-) create mode 100644 libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/diagnostics/checkers/ExperimentalK2UsageChecker.kt diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/experimental/TryK2IT.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/experimental/TryK2IT.kt index bad770ce0b2..88d67876dc0 100644 --- a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/experimental/TryK2IT.kt +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/experimental/TryK2IT.kt @@ -8,9 +8,9 @@ package org.jetbrains.kotlin.gradle.experimental import org.gradle.api.logging.LogLevel import org.gradle.util.GradleVersion import org.jetbrains.kotlin.cli.common.arguments.K2NativeCompilerArguments +import org.jetbrains.kotlin.gradle.plugin.diagnostics.KotlinToolingDiagnostics import org.jetbrains.kotlin.gradle.testbase.* import org.jetbrains.kotlin.gradle.util.parseCompilerArgumentsFromBuildOutput -import org.jetbrains.kotlin.gradle.utils.EXPERIMENTAL_TRY_K2_WARNING_MESSAGE import org.junit.jupiter.api.DisplayName import kotlin.io.path.appendText @@ -29,7 +29,7 @@ class TryK2IT : KGPBaseTest() { enableTryK2() build("--dry-run") { - assertOutputContainsExactTimes(EXPERIMENTAL_TRY_K2_WARNING_MESSAGE, 1) + output.assertHasDiagnostic(KotlinToolingDiagnostics.ExperimentalK2Warning) assertOutputContains("No Kotlin compilation tasks have been run") } } @@ -228,4 +228,4 @@ class TryK2IT : KGPBaseTest() { |kotlin.experimental.tryK2=true """.trimMargin() ) -} \ No newline at end of file +} diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/KotlinPluginWrapper.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/KotlinPluginWrapper.kt index a9a23df653c..2867470d2a2 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/KotlinPluginWrapper.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/KotlinPluginWrapper.kt @@ -96,8 +96,6 @@ abstract class DefaultKotlinBasePlugin : KotlinBasePlugin { } BuildMetricsService.registerIfAbsent(project) - - project.warnExperimentalTryK2IsEnabled() } private fun addKotlinCompilerConfiguration(project: Project) { diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/diagnostics/KotlinGradleProjectChecker.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/diagnostics/KotlinGradleProjectChecker.kt index fa01573c203..6d5141e083f 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/diagnostics/KotlinGradleProjectChecker.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/diagnostics/KotlinGradleProjectChecker.kt @@ -105,7 +105,8 @@ internal interface KotlinGradleProjectChecker { DisabledCinteropCommonizationInHmppProjectChecker, DisabledNativeTargetsChecker, JsEnvironmentChecker, - PreHmppDependenciesUsageChecker + PreHmppDependenciesUsageChecker, + ExperimentalK2UsageChecker ) } } 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 6e4db4f6c2a..22c76dd8d07 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 @@ -321,4 +321,13 @@ object KotlinToolingDiagnostics { """.trimIndent() ) } + + object ExperimentalK2Warning : ToolingDiagnosticFactory(WARNING) { + operator fun invoke() = build( + """ + ATTENTION: 'kotlin.experimental.tryK2' is an experimental option enabled in the project for trying out the new Kotlin K2 compiler only. + Please refrain from using it in production code and provide feedback to the Kotlin team for any issues encountered via https://kotl.in/issue + """.trimIndent() + ) + } } diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/diagnostics/KotlinToolingDiagnosticsCollector.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/diagnostics/KotlinToolingDiagnosticsCollector.kt index 31967333b54..f48c4d85a7e 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/diagnostics/KotlinToolingDiagnosticsCollector.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/diagnostics/KotlinToolingDiagnosticsCollector.kt @@ -11,8 +11,6 @@ import org.gradle.api.provider.Provider import org.gradle.api.services.BuildService import org.gradle.api.services.BuildServiceParameters import org.jetbrains.kotlin.gradle.plugin.PropertiesProvider.Companion.kotlinPropertiesProvider -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.utils.registerClassLoaderScopedBuildService import java.util.* import java.util.concurrent.ConcurrentHashMap @@ -33,14 +31,8 @@ internal abstract class KotlinToolingDiagnosticsCollector : BuildService { val rawDiagnostics = rawDiagnosticsFromProject[project.path] ?: return emptyList() - - val suppressedWarnings = project.kotlinPropertiesProvider.suppressedGradlePluginWarnings.toSet() - val suppressedErrors = project.kotlinPropertiesProvider.suppressedGradlePluginErrors.toSet() - - fun ToolingDiagnostic.isSuppressed(): Boolean = - severity == WARNING && id in suppressedWarnings || severity == ERROR && id in suppressedErrors - - return rawDiagnostics.filter { !it.isSuppressed() } + val options = ToolingDiagnosticRenderingOptions.forProject(project) + return rawDiagnostics.withoutSuppressed(options) } fun report(project: Project, diagnostic: ToolingDiagnostic) { @@ -48,7 +40,10 @@ internal abstract class KotlinToolingDiagnosticsCollector : BuildService T.configureExperimentalTryK2( } ) } - -internal fun Project.warnExperimentalTryK2IsEnabled() { - if (project.kotlinPropertiesProvider.kotlinExperimentalTryK2.get()) { - SingleWarningPerBuild.show(this, EXPERIMENTAL_TRY_K2_WARNING_MESSAGE) - } -} - -val EXPERIMENTAL_TRY_K2_WARNING_MESSAGE = - """ - ATTENTION: 'kotlin.experimental.tryK2' is an experimental option enabled in the project for trying out the new Kotlin K2 compiler only. - Please refrain from using it in production code and provide feedback to the Kotlin team for any issues encountered via https://kotl.in/issue - """.trimIndent() \ No newline at end of file