[Gradle] Migrate KotlinGradleProjectChecker to KotlinExtensionPoint
KT-61634
This commit is contained in:
committed by
Space Team
parent
30665c3e02
commit
d471a5ed4a
+2
-1
@@ -22,7 +22,6 @@ import org.gradle.api.Plugin
|
|||||||
import org.gradle.api.Project
|
import org.gradle.api.Project
|
||||||
import org.gradle.api.logging.Logger
|
import org.gradle.api.logging.Logger
|
||||||
import org.gradle.api.logging.Logging
|
import org.gradle.api.logging.Logging
|
||||||
import org.gradle.api.model.ObjectFactory
|
|
||||||
import org.gradle.tooling.provider.model.ToolingModelBuilderRegistry
|
import org.gradle.tooling.provider.model.ToolingModelBuilderRegistry
|
||||||
import org.jetbrains.kotlin.compilerRunner.maybeCreateCommonizerClasspathConfiguration
|
import org.jetbrains.kotlin.compilerRunner.maybeCreateCommonizerClasspathConfiguration
|
||||||
import org.jetbrains.kotlin.gradle.dsl.*
|
import org.jetbrains.kotlin.gradle.dsl.*
|
||||||
@@ -258,6 +257,8 @@ abstract class KotlinBasePluginWrapper : DefaultKotlinBasePlugin() {
|
|||||||
|
|
||||||
setupAttributeMatchingStrategy(project)
|
setupAttributeMatchingStrategy(project)
|
||||||
|
|
||||||
|
project.registerKotlinPluginExtensions()
|
||||||
|
|
||||||
project.startKotlinPluginLifecycle()
|
project.startKotlinPluginLifecycle()
|
||||||
|
|
||||||
plugin.apply(project)
|
plugin.apply(project)
|
||||||
|
|||||||
+2
-21
@@ -11,6 +11,7 @@ import org.jetbrains.kotlin.gradle.dsl.AndroidMainSourceSetConventionsChecker
|
|||||||
import org.jetbrains.kotlin.gradle.dsl.IosSourceSetConventionChecker
|
import org.jetbrains.kotlin.gradle.dsl.IosSourceSetConventionChecker
|
||||||
import org.jetbrains.kotlin.gradle.dsl.KotlinMultiplatformExtension
|
import org.jetbrains.kotlin.gradle.dsl.KotlinMultiplatformExtension
|
||||||
import org.jetbrains.kotlin.gradle.dsl.PlatformSourceSetConventionsChecker
|
import org.jetbrains.kotlin.gradle.dsl.PlatformSourceSetConventionsChecker
|
||||||
|
import org.jetbrains.kotlin.gradle.plugin.KotlinExtensionPoint
|
||||||
import org.jetbrains.kotlin.gradle.plugin.KotlinPluginLifecycle
|
import org.jetbrains.kotlin.gradle.plugin.KotlinPluginLifecycle
|
||||||
import org.jetbrains.kotlin.gradle.plugin.PropertiesProvider
|
import org.jetbrains.kotlin.gradle.plugin.PropertiesProvider
|
||||||
import org.jetbrains.kotlin.gradle.plugin.diagnostics.checkers.*
|
import org.jetbrains.kotlin.gradle.plugin.diagnostics.checkers.*
|
||||||
@@ -96,27 +97,7 @@ internal interface KotlinGradleProjectChecker {
|
|||||||
suspend fun KotlinGradleProjectCheckerContext.runChecks(collector: KotlinToolingDiagnosticsCollector)
|
suspend fun KotlinGradleProjectCheckerContext.runChecks(collector: KotlinToolingDiagnosticsCollector)
|
||||||
|
|
||||||
companion object {
|
companion object {
|
||||||
val ALL_CHECKERS: List<KotlinGradleProjectChecker> = listOf(
|
val extensionPoint = KotlinExtensionPoint<KotlinGradleProjectChecker>()
|
||||||
CommonMainOrTestWithDependsOnChecker,
|
|
||||||
DeprecatedKotlinNativeTargetsChecker,
|
|
||||||
MissingNativeStdlibChecker,
|
|
||||||
UnusedSourceSetsChecker,
|
|
||||||
AndroidSourceSetLayoutV1SourceSetsNotFoundChecker,
|
|
||||||
AndroidPluginWithoutAndroidTargetChecker,
|
|
||||||
NoKotlinTargetsDeclaredChecker,
|
|
||||||
DisabledCinteropCommonizationInHmppProjectChecker,
|
|
||||||
DisabledNativeTargetsChecker,
|
|
||||||
JsEnvironmentChecker,
|
|
||||||
PreHmppDependenciesUsageChecker,
|
|
||||||
ExperimentalK2UsageChecker,
|
|
||||||
KotlinSourceSetTreeDependsOnMismatchChecker,
|
|
||||||
PlatformSourceSetConventionsChecker,
|
|
||||||
AndroidMainSourceSetConventionsChecker,
|
|
||||||
IosSourceSetConventionChecker,
|
|
||||||
KotlinTargetAlreadyDeclaredChecker,
|
|
||||||
InternalGradlePropertiesUsageChecker,
|
|
||||||
WasmSourceSetsNotFoundChecker,
|
|
||||||
)
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+1
-13
@@ -12,7 +12,7 @@ import org.jetbrains.kotlin.gradle.plugin.extraProperties
|
|||||||
import org.jetbrains.kotlin.gradle.plugin.launch
|
import org.jetbrains.kotlin.gradle.plugin.launch
|
||||||
|
|
||||||
internal fun Project.launchKotlinGradleProjectCheckers() {
|
internal fun Project.launchKotlinGradleProjectCheckers() {
|
||||||
val checkers = kotlinGradleProjectCheckersOverride ?: KotlinGradleProjectChecker.ALL_CHECKERS
|
val checkers = KotlinGradleProjectChecker.extensionPoint[project]
|
||||||
|
|
||||||
val context = KotlinGradleProjectCheckerContext(
|
val context = KotlinGradleProjectCheckerContext(
|
||||||
project,
|
project,
|
||||||
@@ -25,15 +25,3 @@ internal fun Project.launchKotlinGradleProjectCheckers() {
|
|||||||
with(checker) { launch { context.runChecks(collector) } }
|
with(checker) { launch { context.runChecks(collector) } }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
internal val Project.kotlinGradleProjectCheckersOverride: Collection<KotlinGradleProjectChecker>?
|
|
||||||
get() {
|
|
||||||
return if (extraProperties.has(KOTLIN_GRADLE_PROJECT_CHECKERS_OVERRIDE))
|
|
||||||
@Suppress("unchecked_cast")
|
|
||||||
extraProperties.get(KOTLIN_GRADLE_PROJECT_CHECKERS_OVERRIDE) as Collection<KotlinGradleProjectChecker>?
|
|
||||||
else
|
|
||||||
null
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
internal const val KOTLIN_GRADLE_PROJECT_CHECKERS_OVERRIDE = "kotlin.internal.override.checkers"
|
|
||||||
|
|||||||
+42
-1
@@ -6,10 +6,51 @@
|
|||||||
package org.jetbrains.kotlin.gradle.plugin
|
package org.jetbrains.kotlin.gradle.plugin
|
||||||
|
|
||||||
import org.gradle.api.Project
|
import org.gradle.api.Project
|
||||||
|
import org.jetbrains.kotlin.gradle.dsl.AndroidMainSourceSetConventionsChecker
|
||||||
|
import org.jetbrains.kotlin.gradle.dsl.IosSourceSetConventionChecker
|
||||||
|
import org.jetbrains.kotlin.gradle.dsl.PlatformSourceSetConventionsChecker
|
||||||
|
import org.jetbrains.kotlin.gradle.plugin.diagnostics.KotlinGradleProjectChecker
|
||||||
|
import org.jetbrains.kotlin.gradle.plugin.diagnostics.checkers.*
|
||||||
|
import org.jetbrains.kotlin.gradle.plugin.diagnostics.checkers.AndroidPluginWithoutAndroidTargetChecker
|
||||||
|
import org.jetbrains.kotlin.gradle.plugin.diagnostics.checkers.AndroidSourceSetLayoutV1SourceSetsNotFoundChecker
|
||||||
|
import org.jetbrains.kotlin.gradle.plugin.diagnostics.checkers.CommonMainOrTestWithDependsOnChecker
|
||||||
|
import org.jetbrains.kotlin.gradle.plugin.diagnostics.checkers.DeprecatedKotlinNativeTargetsChecker
|
||||||
|
import org.jetbrains.kotlin.gradle.plugin.diagnostics.checkers.DisabledCinteropCommonizationInHmppProjectChecker
|
||||||
|
import org.jetbrains.kotlin.gradle.plugin.diagnostics.checkers.DisabledNativeTargetsChecker
|
||||||
|
import org.jetbrains.kotlin.gradle.plugin.diagnostics.checkers.ExperimentalK2UsageChecker
|
||||||
|
import org.jetbrains.kotlin.gradle.plugin.diagnostics.checkers.InternalGradlePropertiesUsageChecker
|
||||||
|
import org.jetbrains.kotlin.gradle.plugin.diagnostics.checkers.JsEnvironmentChecker
|
||||||
|
import org.jetbrains.kotlin.gradle.plugin.diagnostics.checkers.KotlinSourceSetTreeDependsOnMismatchChecker
|
||||||
|
import org.jetbrains.kotlin.gradle.plugin.diagnostics.checkers.KotlinTargetAlreadyDeclaredChecker
|
||||||
|
import org.jetbrains.kotlin.gradle.plugin.diagnostics.checkers.MissingNativeStdlibChecker
|
||||||
|
import org.jetbrains.kotlin.gradle.plugin.diagnostics.checkers.NoKotlinTargetsDeclaredChecker
|
||||||
|
import org.jetbrains.kotlin.gradle.plugin.diagnostics.checkers.PreHmppDependenciesUsageChecker
|
||||||
|
import org.jetbrains.kotlin.gradle.plugin.diagnostics.checkers.UnusedSourceSetsChecker
|
||||||
|
import org.jetbrains.kotlin.gradle.plugin.diagnostics.checkers.WasmSourceSetsNotFoundChecker
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Active Extensions (using the [KotlinExtensionPoint] infrastructure) will be registered here by the Kotlin Gradle Plugin.
|
* Active Extensions (using the [KotlinExtensionPoint] infrastructure) will be registered here by the Kotlin Gradle Plugin.
|
||||||
*/
|
*/
|
||||||
internal fun Project.registerKotlinPluginExtensions() {
|
internal fun Project.registerKotlinPluginExtensions() {
|
||||||
// No extensions available yet.
|
KotlinGradleProjectChecker.extensionPoint.apply {
|
||||||
|
register(project, CommonMainOrTestWithDependsOnChecker)
|
||||||
|
register(project, DeprecatedKotlinNativeTargetsChecker)
|
||||||
|
register(project, MissingNativeStdlibChecker)
|
||||||
|
register(project, UnusedSourceSetsChecker)
|
||||||
|
register(project, AndroidSourceSetLayoutV1SourceSetsNotFoundChecker)
|
||||||
|
register(project, AndroidPluginWithoutAndroidTargetChecker)
|
||||||
|
register(project, NoKotlinTargetsDeclaredChecker)
|
||||||
|
register(project, DisabledCinteropCommonizationInHmppProjectChecker)
|
||||||
|
register(project, DisabledNativeTargetsChecker)
|
||||||
|
register(project, JsEnvironmentChecker)
|
||||||
|
register(project, PreHmppDependenciesUsageChecker)
|
||||||
|
register(project, ExperimentalK2UsageChecker)
|
||||||
|
register(project, KotlinSourceSetTreeDependsOnMismatchChecker)
|
||||||
|
register(project, PlatformSourceSetConventionsChecker)
|
||||||
|
register(project, AndroidMainSourceSetConventionsChecker)
|
||||||
|
register(project, IosSourceSetConventionChecker)
|
||||||
|
register(project, KotlinTargetAlreadyDeclaredChecker)
|
||||||
|
register(project, InternalGradlePropertiesUsageChecker)
|
||||||
|
register(project, WasmSourceSetsNotFoundChecker)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
+3
-5
@@ -17,6 +17,7 @@ import org.jetbrains.kotlin.gradle.plugin.diagnostics.ToolingDiagnostic.Severity
|
|||||||
import org.jetbrains.kotlin.gradle.plugin.diagnostics.ToolingDiagnostic.Severity.ERROR
|
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.plugin.diagnostics.ToolingDiagnostic.Severity.WARNING
|
||||||
import org.jetbrains.kotlin.gradle.plugin.extraProperties
|
import org.jetbrains.kotlin.gradle.plugin.extraProperties
|
||||||
|
import org.jetbrains.kotlin.gradle.util.set
|
||||||
import org.junit.Test
|
import org.junit.Test
|
||||||
|
|
||||||
class DiagnosticsReportingFunctionalTest {
|
class DiagnosticsReportingFunctionalTest {
|
||||||
@@ -161,11 +162,8 @@ private fun buildProjectWithMockedCheckers(
|
|||||||
}
|
}
|
||||||
)
|
)
|
||||||
|
|
||||||
project.allprojects {
|
project.allprojects { currentProject ->
|
||||||
project.extensions.extraProperties.set(
|
KotlinGradleProjectChecker.extensionPoint[currentProject] = listOf(MockChecker, MockPerProjectChecker, MockPerBuildChecker)
|
||||||
KOTLIN_GRADLE_PROJECT_CHECKERS_OVERRIDE,
|
|
||||||
listOf(MockChecker, MockPerProjectChecker, MockPerBuildChecker)
|
|
||||||
)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
project.block()
|
project.block()
|
||||||
|
|||||||
+1
-1
@@ -14,7 +14,7 @@ import org.jetbrains.kotlin.tooling.core.UnsafeApi
|
|||||||
* Completely overwrites the currently registered extensions on this [KotlinExtensionPoint] in this project.
|
* Completely overwrites the currently registered extensions on this [KotlinExtensionPoint] in this project.
|
||||||
*/
|
*/
|
||||||
@OptIn(UnsafeApi::class)
|
@OptIn(UnsafeApi::class)
|
||||||
fun <T> KotlinExtensionPoint<T>.set(project: Project, extensions: List<T>) {
|
operator fun <T> KotlinExtensionPoint<T>.set(project: Project, extensions: List<T>) {
|
||||||
(this as KotlinExtensionPointInternal<T>)
|
(this as KotlinExtensionPointInternal<T>)
|
||||||
set(project, extensions)
|
set(project, extensions)
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user