[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.logging.Logger
|
||||
import org.gradle.api.logging.Logging
|
||||
import org.gradle.api.model.ObjectFactory
|
||||
import org.gradle.tooling.provider.model.ToolingModelBuilderRegistry
|
||||
import org.jetbrains.kotlin.compilerRunner.maybeCreateCommonizerClasspathConfiguration
|
||||
import org.jetbrains.kotlin.gradle.dsl.*
|
||||
@@ -258,6 +257,8 @@ abstract class KotlinBasePluginWrapper : DefaultKotlinBasePlugin() {
|
||||
|
||||
setupAttributeMatchingStrategy(project)
|
||||
|
||||
project.registerKotlinPluginExtensions()
|
||||
|
||||
project.startKotlinPluginLifecycle()
|
||||
|
||||
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.KotlinMultiplatformExtension
|
||||
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.PropertiesProvider
|
||||
import org.jetbrains.kotlin.gradle.plugin.diagnostics.checkers.*
|
||||
@@ -96,27 +97,7 @@ internal interface KotlinGradleProjectChecker {
|
||||
suspend fun KotlinGradleProjectCheckerContext.runChecks(collector: KotlinToolingDiagnosticsCollector)
|
||||
|
||||
companion object {
|
||||
val ALL_CHECKERS: List<KotlinGradleProjectChecker> = listOf(
|
||||
CommonMainOrTestWithDependsOnChecker,
|
||||
DeprecatedKotlinNativeTargetsChecker,
|
||||
MissingNativeStdlibChecker,
|
||||
UnusedSourceSetsChecker,
|
||||
AndroidSourceSetLayoutV1SourceSetsNotFoundChecker,
|
||||
AndroidPluginWithoutAndroidTargetChecker,
|
||||
NoKotlinTargetsDeclaredChecker,
|
||||
DisabledCinteropCommonizationInHmppProjectChecker,
|
||||
DisabledNativeTargetsChecker,
|
||||
JsEnvironmentChecker,
|
||||
PreHmppDependenciesUsageChecker,
|
||||
ExperimentalK2UsageChecker,
|
||||
KotlinSourceSetTreeDependsOnMismatchChecker,
|
||||
PlatformSourceSetConventionsChecker,
|
||||
AndroidMainSourceSetConventionsChecker,
|
||||
IosSourceSetConventionChecker,
|
||||
KotlinTargetAlreadyDeclaredChecker,
|
||||
InternalGradlePropertiesUsageChecker,
|
||||
WasmSourceSetsNotFoundChecker,
|
||||
)
|
||||
val extensionPoint = KotlinExtensionPoint<KotlinGradleProjectChecker>()
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
+1
-13
@@ -12,7 +12,7 @@ import org.jetbrains.kotlin.gradle.plugin.extraProperties
|
||||
import org.jetbrains.kotlin.gradle.plugin.launch
|
||||
|
||||
internal fun Project.launchKotlinGradleProjectCheckers() {
|
||||
val checkers = kotlinGradleProjectCheckersOverride ?: KotlinGradleProjectChecker.ALL_CHECKERS
|
||||
val checkers = KotlinGradleProjectChecker.extensionPoint[project]
|
||||
|
||||
val context = KotlinGradleProjectCheckerContext(
|
||||
project,
|
||||
@@ -25,15 +25,3 @@ internal fun Project.launchKotlinGradleProjectCheckers() {
|
||||
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"
|
||||
|
||||
+43
-2
@@ -6,10 +6,51 @@
|
||||
package org.jetbrains.kotlin.gradle.plugin
|
||||
|
||||
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.
|
||||
*/
|
||||
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.WARNING
|
||||
import org.jetbrains.kotlin.gradle.plugin.extraProperties
|
||||
import org.jetbrains.kotlin.gradle.util.set
|
||||
import org.junit.Test
|
||||
|
||||
class DiagnosticsReportingFunctionalTest {
|
||||
@@ -161,11 +162,8 @@ private fun buildProjectWithMockedCheckers(
|
||||
}
|
||||
)
|
||||
|
||||
project.allprojects {
|
||||
project.extensions.extraProperties.set(
|
||||
KOTLIN_GRADLE_PROJECT_CHECKERS_OVERRIDE,
|
||||
listOf(MockChecker, MockPerProjectChecker, MockPerBuildChecker)
|
||||
)
|
||||
project.allprojects { currentProject ->
|
||||
KotlinGradleProjectChecker.extensionPoint[currentProject] = listOf(MockChecker, MockPerProjectChecker, MockPerBuildChecker)
|
||||
}
|
||||
|
||||
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.
|
||||
*/
|
||||
@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>)
|
||||
set(project, extensions)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user