[FIR] Part 3. Setup running platform checkers in CLI
^KT-58881
This commit is contained in:
committed by
Nikolay Lunyak
parent
c4e4776c5e
commit
ed874262e3
@@ -25,7 +25,7 @@ fun FirSession.runCheckers(
|
||||
scopeSession: ScopeSession,
|
||||
firFiles: Collection<FirFile>,
|
||||
reporter: BaseDiagnosticsCollector,
|
||||
mppCheckerKind: MppCheckerKind = TODO()
|
||||
mppCheckerKind: MppCheckerKind
|
||||
): Map<FirFile, List<KtDiagnostic>> {
|
||||
val collector = DiagnosticComponentsFactory.create(this, scopeSession, mppCheckerKind)
|
||||
collector.collectDiagnosticsInSettings(reporter)
|
||||
|
||||
@@ -13,7 +13,9 @@ import org.jetbrains.kotlin.backend.common.actualizer.SpecialFakeOverrideSymbols
|
||||
import org.jetbrains.kotlin.backend.common.extensions.IrGenerationExtension
|
||||
import org.jetbrains.kotlin.backend.common.extensions.IrPluginContext
|
||||
import org.jetbrains.kotlin.builtins.KotlinBuiltIns
|
||||
import org.jetbrains.kotlin.diagnostics.impl.BaseDiagnosticsCollector
|
||||
import org.jetbrains.kotlin.fir.FirSession
|
||||
import org.jetbrains.kotlin.fir.analysis.checkers.MppCheckerKind
|
||||
import org.jetbrains.kotlin.fir.backend.*
|
||||
import org.jetbrains.kotlin.fir.backend.jvm.Fir2IrJvmSpecialAnnotationSymbolProvider
|
||||
import org.jetbrains.kotlin.fir.declarations.FirFile
|
||||
@@ -41,6 +43,15 @@ data class Fir2IrActualizedResult(
|
||||
val irActualizedResult: IrActualizedResult?,
|
||||
)
|
||||
|
||||
fun List<ModuleCompilerAnalyzedOutput>.runPlatformCheckers(reporter: BaseDiagnosticsCollector) {
|
||||
val platformModule = this.last()
|
||||
val session = platformModule.session
|
||||
val scopeSession = platformModule.scopeSession
|
||||
|
||||
val allFiles = this.flatMap { it.fir }
|
||||
session.runCheckers(scopeSession, allFiles, reporter, MppCheckerKind.Platform)
|
||||
}
|
||||
|
||||
fun FirResult.convertToIrAndActualize(
|
||||
fir2IrExtensions: Fir2IrExtensions,
|
||||
fir2IrConfiguration: Fir2IrConfiguration,
|
||||
|
||||
@@ -9,6 +9,7 @@ import org.jetbrains.kotlin.KtSourceFile
|
||||
import org.jetbrains.kotlin.diagnostics.DiagnosticReporter
|
||||
import org.jetbrains.kotlin.diagnostics.impl.BaseDiagnosticsCollector
|
||||
import org.jetbrains.kotlin.fir.FirSession
|
||||
import org.jetbrains.kotlin.fir.analysis.checkers.MppCheckerKind
|
||||
import org.jetbrains.kotlin.fir.builder.PsiRawFirBuilder
|
||||
import org.jetbrains.kotlin.fir.declarations.FirFile
|
||||
import org.jetbrains.kotlin.fir.lightTree.LightTree2Fir
|
||||
@@ -63,13 +64,17 @@ fun buildResolveAndCheckFirFromKtFiles(
|
||||
return resolveAndCheckFir(session, session.buildFirFromKtFiles(ktFiles), diagnosticsReporter)
|
||||
}
|
||||
|
||||
/**
|
||||
* This function runs only common checkers
|
||||
* Platform checkers should be run separately, after all parts of MPP structure will be resolved
|
||||
*/
|
||||
fun resolveAndCheckFir(
|
||||
session: FirSession,
|
||||
firFiles: List<FirFile>,
|
||||
diagnosticsReporter: BaseDiagnosticsCollector
|
||||
): ModuleCompilerAnalyzedOutput {
|
||||
val (scopeSession, fir) = session.runResolution(firFiles)
|
||||
session.runCheckers(scopeSession, fir, diagnosticsReporter)
|
||||
session.runCheckers(scopeSession, fir, diagnosticsReporter, MppCheckerKind.Common)
|
||||
return ModuleCompilerAnalyzedOutput(session, scopeSession, fir)
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user