[Gradle] Migrate K2-usage warning
This commit is contained in:
+3
-3
@@ -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()
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
-2
@@ -96,8 +96,6 @@ abstract class DefaultKotlinBasePlugin : KotlinBasePlugin {
|
||||
}
|
||||
|
||||
BuildMetricsService.registerIfAbsent(project)
|
||||
|
||||
project.warnExperimentalTryK2IsEnabled()
|
||||
}
|
||||
|
||||
private fun addKotlinCompilerConfiguration(project: Project) {
|
||||
|
||||
+2
-1
@@ -105,7 +105,8 @@ internal interface KotlinGradleProjectChecker {
|
||||
DisabledCinteropCommonizationInHmppProjectChecker,
|
||||
DisabledNativeTargetsChecker,
|
||||
JsEnvironmentChecker,
|
||||
PreHmppDependenciesUsageChecker
|
||||
PreHmppDependenciesUsageChecker,
|
||||
ExperimentalK2UsageChecker
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
+9
@@ -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()
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
+6
-11
@@ -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<BuildSe
|
||||
|
||||
fun getDiagnosticsForProject(project: Project): Collection<ToolingDiagnostic> {
|
||||
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<BuildSe
|
||||
}
|
||||
|
||||
fun report(task: UsesKotlinToolingDiagnostics, diagnostic: ToolingDiagnostic) {
|
||||
renderReportedDiagnostic(diagnostic, task.logger, isVerbose = false) // TODO: wire suppression/verbosity
|
||||
val options = task.diagnosticRenderingOptions.get()
|
||||
if (!diagnostic.isSuppressed(options)) {
|
||||
renderReportedDiagnostic(diagnostic, task.logger, options.isVerbose)
|
||||
}
|
||||
}
|
||||
|
||||
fun reportOncePerGradleProject(fromProject: Project, diagnostic: ToolingDiagnostic, key: ToolingDiagnosticId = diagnostic.id) {
|
||||
|
||||
+20
@@ -0,0 +1,20 @@
|
||||
/*
|
||||
* Copyright 2010-2023 JetBrains s.r.o. and Kotlin Programming Language contributors.
|
||||
* Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
|
||||
*/
|
||||
|
||||
package org.jetbrains.kotlin.gradle.plugin.diagnostics.checkers
|
||||
|
||||
import org.jetbrains.kotlin.gradle.plugin.PropertiesProvider.Companion.kotlinPropertiesProvider
|
||||
import org.jetbrains.kotlin.gradle.plugin.diagnostics.KotlinGradleProjectChecker
|
||||
import org.jetbrains.kotlin.gradle.plugin.diagnostics.KotlinGradleProjectCheckerContext
|
||||
import org.jetbrains.kotlin.gradle.plugin.diagnostics.KotlinToolingDiagnostics
|
||||
import org.jetbrains.kotlin.gradle.plugin.diagnostics.KotlinToolingDiagnosticsCollector
|
||||
|
||||
internal object ExperimentalK2UsageChecker : KotlinGradleProjectChecker {
|
||||
override suspend fun KotlinGradleProjectCheckerContext.runChecks(collector: KotlinToolingDiagnosticsCollector) {
|
||||
if (project.kotlinPropertiesProvider.kotlinExperimentalTryK2.get()) {
|
||||
collector.reportOncePerGradleBuild(project, KotlinToolingDiagnostics.ExperimentalK2Warning())
|
||||
}
|
||||
}
|
||||
}
|
||||
-12
@@ -26,15 +26,3 @@ internal fun <T : KotlinCommonCompilerOptions> 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()
|
||||
Reference in New Issue
Block a user