K2: introduce infrastructure for LanguageVersionSettings checkers

This commit is contained in:
Mikhail Glukhikh
2023-07-14 18:03:30 +02:00
committed by Space Team
parent ba75ee4c03
commit 8c305d6143
23 changed files with 183 additions and 12 deletions
@@ -19,12 +19,14 @@ fun FirSessionConfigurator.registerCommonCheckers() {
useCheckers(CommonDeclarationCheckers)
useCheckers(CommonExpressionCheckers)
useCheckers(CommonTypeCheckers)
useCheckers(CommonLanguageVersionSettingsCheckers)
}
fun FirSessionConfigurator.registerExtendedCommonCheckers() {
useCheckers(ExtendedExpressionCheckers)
useCheckers(ExtendedDeclarationCheckers)
useCheckers(ExtendedTypeCheckers)
useCheckers(ExtendedLanguageVersionSettingsCheckers)
}
fun FirSessionConfigurator.registerJvmCheckers() {
@@ -21,6 +21,7 @@ fun FirSession.runResolution(firFiles: List<FirFile>): Pair<ScopeSession, List<F
fun FirSession.runCheckers(scopeSession: ScopeSession, firFiles: List<FirFile>, reporter: DiagnosticReporter) {
val collector = FirDiagnosticsCollector.create(this, scopeSession)
collector.collectDiagnosticsInSettings(reporter)
for (file in firFiles) {
withFileAnalysisExceptionWrapping(file) {
collector.collectDiagnostics(file, reporter)
@@ -7,6 +7,7 @@ package org.jetbrains.kotlin.fir.session
import org.jetbrains.kotlin.fir.FirSession
import org.jetbrains.kotlin.fir.SessionConfiguration
import org.jetbrains.kotlin.fir.analysis.checkers.LanguageVersionSettingsCheckers
import org.jetbrains.kotlin.fir.analysis.checkers.declaration.DeclarationCheckers
import org.jetbrains.kotlin.fir.analysis.checkers.expression.ExpressionCheckers
import org.jetbrains.kotlin.fir.analysis.checkers.type.TypeCheckers
@@ -36,6 +37,11 @@ class FirSessionConfigurator(private val session: FirSession) {
session.checkersComponent.register(checkers)
}
@OptIn(SessionConfiguration::class)
fun useCheckers(checkers: LanguageVersionSettingsCheckers) {
session.checkersComponent.register(checkers)
}
@OptIn(PluginServicesInitialization::class)
@SessionConfiguration
fun configure() {