[Gradle, WASM] Move stability warning to Diagnostics Infra
And report it only once per build, so it doesn't spam users with multiple projects in the logs. ^KT-66429 Verification Pending
This commit is contained in:
committed by
Space Team
parent
08f6e21f5d
commit
753e365c9e
+6
@@ -867,6 +867,12 @@ object KotlinToolingDiagnostics {
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
object WasmStabilityWarning : ToolingDiagnosticFactory(WARNING) {
|
||||
operator fun invoke(): ToolingDiagnostic =
|
||||
build("New 'wasm' target is Work-in-Progress and is subject to change without notice. " +
|
||||
"Please report encountered issues to https://kotl.in/issue")
|
||||
}
|
||||
}
|
||||
|
||||
private fun String.indentLines(nSpaces: Int = 4, skipFirstLine: Boolean = true): String {
|
||||
|
||||
+3
-1
@@ -8,6 +8,8 @@ package org.jetbrains.kotlin.gradle.targets.js.ir
|
||||
import org.gradle.api.Project
|
||||
import org.jetbrains.kotlin.gradle.DeprecatedTargetPresetApi
|
||||
import org.jetbrains.kotlin.gradle.plugin.*
|
||||
import org.jetbrains.kotlin.gradle.plugin.diagnostics.KotlinToolingDiagnostics
|
||||
import org.jetbrains.kotlin.gradle.plugin.diagnostics.reportDiagnosticOncePerBuild
|
||||
import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinCompilationFactory
|
||||
import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinOnlyTargetPreset
|
||||
import org.jetbrains.kotlin.gradle.targets.js.KotlinWasmTargetType
|
||||
@@ -23,7 +25,7 @@ class KotlinWasmTargetPreset(
|
||||
|
||||
override fun instantiateTarget(name: String): KotlinJsIrTarget {
|
||||
if (!PropertiesProvider(project).wasmStabilityNoWarn) {
|
||||
project.logger.warn("New 'wasm' target is Work-in-Progress and is subject to change without notice.")
|
||||
project.reportDiagnosticOncePerBuild(KotlinToolingDiagnostics.WasmStabilityWarning())
|
||||
}
|
||||
|
||||
val irTarget = project.objects.newInstance(KotlinJsIrTarget::class.java, project, KotlinPlatformType.wasm)
|
||||
|
||||
+38
-2
@@ -6,10 +6,11 @@
|
||||
package org.jetbrains.kotlin.gradle.unitTests.diagnosticsTests
|
||||
|
||||
import org.jetbrains.kotlin.gradle.dsl.targetFromPresetInternal
|
||||
import org.jetbrains.kotlin.gradle.plugin.diagnostics.KotlinToolingDiagnostics
|
||||
import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinJvmWithJavaTargetPreset
|
||||
import org.jetbrains.kotlin.gradle.util.androidLibrary
|
||||
import org.jetbrains.kotlin.gradle.targets.js.dsl.ExperimentalWasmDsl
|
||||
import org.jetbrains.kotlin.gradle.util.*
|
||||
import org.jetbrains.kotlin.gradle.util.checkDiagnosticsWithMppProject
|
||||
import org.jetbrains.kotlin.gradle.util.kotlin
|
||||
import org.junit.Test
|
||||
|
||||
class MppDiagnosticsFunctionalTest {
|
||||
@@ -126,4 +127,39 @@ class MppDiagnosticsFunctionalTest {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
@OptIn(ExperimentalWasmDsl::class)
|
||||
fun wasmStabilityWarningReportedOncePerBuild() {
|
||||
val rootProject = buildProjectWithMPP(projectBuilder = { withName("lib") }) {
|
||||
kotlin { jvm(); wasmJs { browser() } }
|
||||
}
|
||||
val childProject = buildProjectWithMPP(projectBuilder = { withParent(rootProject).withName("app") }) {
|
||||
kotlin { jvm(); wasmJs { browser() } }
|
||||
}
|
||||
childProject.evaluate()
|
||||
rootProject.evaluate()
|
||||
|
||||
// wasm target was declared first in the root project, so only root project should report it
|
||||
rootProject.assertContainsDiagnostic(KotlinToolingDiagnostics.WasmStabilityWarning)
|
||||
childProject.assertNoDiagnostics(KotlinToolingDiagnostics.WasmStabilityWarning)
|
||||
}
|
||||
|
||||
@Test
|
||||
@OptIn(ExperimentalWasmDsl::class)
|
||||
fun wasmStabilityWarningCanBeSuppressed() {
|
||||
val rootProject = buildProjectWithMPP(projectBuilder = { withName("lib") }) {
|
||||
enableWasmStabilityNoWarn()
|
||||
kotlin { jvm(); wasmJs { browser() } }
|
||||
}
|
||||
val childProject = buildProjectWithMPP(projectBuilder = { withParent(rootProject).withName("app") }) {
|
||||
enableWasmStabilityNoWarn()
|
||||
kotlin { jvm(); wasmJs { browser() } }
|
||||
}
|
||||
childProject.evaluate()
|
||||
rootProject.evaluate()
|
||||
|
||||
rootProject.assertNoDiagnostics(KotlinToolingDiagnostics.WasmStabilityWarning)
|
||||
childProject.assertNoDiagnostics(KotlinToolingDiagnostics.WasmStabilityWarning)
|
||||
}
|
||||
}
|
||||
|
||||
+3
@@ -139,3 +139,6 @@ fun Project.enableDependencyVerification(enabled: Boolean = true) {
|
||||
else DependencyVerificationMode.OFF
|
||||
}
|
||||
|
||||
fun Project.enableWasmStabilityNoWarn(enabled: Boolean = true) {
|
||||
propertiesExtension.set("kotlin.wasm.stability.nowarn", enabled.toString())
|
||||
}
|
||||
Reference in New Issue
Block a user