From 7a5f1d694ff82a0f8912e87c62ebbd822c66b010 Mon Sep 17 00:00:00 2001 From: Dmitry Savvinov Date: Wed, 15 Mar 2023 16:53:19 +0100 Subject: [PATCH] [mpp] Migrate checks of deprecated K/N targets to new infra --- .../diagnostics/KotlinToolingDiagnostics.kt | 6 +++++ .../DeprecatedKotlinNativeTargetsChecker.kt | 25 +++++++++++++++++++ 2 files changed, 31 insertions(+) create mode 100644 libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/diagnostics/checkers/DeprecatedKotlinNativeTargetsChecker.kt 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 4a30f18d041..7349b168617 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 @@ -17,4 +17,10 @@ object KotlinToolingDiagnostics { "Read the details here: https://kotlinlang.org/docs/multiplatform-compatibility-guide.html#deprecate-hmpp-properties", ) } + + object DeprecatedKotlinNativeTargetsDiagnostic : ToolingDiagnosticFactory(WARNING) { + operator fun invoke(usedTargetIds: List) = build( + "The following deprecated Kotlin/Native targets were used in the project: ${usedTargetIds.joinToString()}" + ) + } } diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/diagnostics/checkers/DeprecatedKotlinNativeTargetsChecker.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/diagnostics/checkers/DeprecatedKotlinNativeTargetsChecker.kt new file mode 100644 index 00000000000..3d2c2755d1f --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/diagnostics/checkers/DeprecatedKotlinNativeTargetsChecker.kt @@ -0,0 +1,25 @@ +/* + * 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.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 +import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinNativeTarget +import org.jetbrains.kotlin.konan.target.KonanTarget + +internal object DeprecatedKotlinNativeTargetsChecker : KotlinGradleProjectChecker { + override fun KotlinGradleProjectCheckerContext.runChecks(collector: KotlinToolingDiagnosticsCollector) { + val targets = multiplatformExtension?.targets ?: return + val usedDeprecatedTargets = targets + .filter { it is KotlinNativeTarget && it.konanTarget in KonanTarget.deprecatedTargets } + .map { it.name } + if (usedDeprecatedTargets.isEmpty()) return + + collector.report(project, KotlinToolingDiagnostics.DeprecatedKotlinNativeTargetsDiagnostic(usedDeprecatedTargets)) + } +}