[test] Run checkers in metadata-like style to see what diagnostics metadata compilation omits

Review: https://jetbrains.team/p/kt/reviews/14807

Technically, *.ll.kt should have been covering that. But I see that
there slight differences
This commit is contained in:
Nikita Bobko
2024-03-04 14:51:21 +01:00
committed by Space Team
parent ab069cb7f4
commit 9d566465e6
30 changed files with 330 additions and 87 deletions
@@ -10,7 +10,6 @@ import org.jetbrains.kotlin.analysis.low.level.api.fir.api.LLFirResolveSession
import org.jetbrains.kotlin.analysis.low.level.api.fir.api.collectDiagnosticsForFile
import org.jetbrains.kotlin.diagnostics.KtDiagnostic
import org.jetbrains.kotlin.fir.AbstractFirAnalyzerFacade
import org.jetbrains.kotlin.fir.analysis.checkers.MppCheckerKind
import org.jetbrains.kotlin.fir.declarations.FirFile
import org.jetbrains.kotlin.fir.pipeline.FirResult
import org.jetbrains.kotlin.fir.pipeline.ModuleCompilerAnalyzedOutput
@@ -20,8 +19,10 @@ import org.jetbrains.kotlin.fir.util.listMultimapOf
import org.jetbrains.kotlin.fir.util.plusAssign
import org.jetbrains.kotlin.psi.KtFile
import org.jetbrains.kotlin.test.frontend.fir.FirOutputArtifact
import org.jetbrains.kotlin.test.frontend.fir.handlers.DiagnosticWithKmpCompilationMode
import org.jetbrains.kotlin.test.frontend.fir.handlers.DiagnosticsMap
import org.jetbrains.kotlin.test.frontend.fir.handlers.FirDiagnosticCollectorService
import org.jetbrains.kotlin.test.frontend.fir.handlers.KmpCompilationMode
import org.jetbrains.kotlin.test.model.TestFile
import org.jetbrains.kotlin.test.services.TestServices
@@ -60,11 +61,13 @@ open class LowLevelFirAnalyzerFacade(
class AnalysisApiFirDiagnosticCollectorService(testServices: TestServices) : FirDiagnosticCollectorService(testServices) {
override fun getFrontendDiagnosticsForModule(info: FirOutputArtifact): DiagnosticsMap {
val result = listMultimapOf<FirFile, KtDiagnostic>()
val result = listMultimapOf<FirFile, DiagnosticWithKmpCompilationMode>()
for (part in info.partsForDependsOnModules) {
val facade = part.firAnalyzerFacade
require(facade is LowLevelFirAnalyzerFacade)
result += facade.runCheckers()
result += facade.runCheckers().mapValues { entry ->
entry.value.map { DiagnosticWithKmpCompilationMode(it, KmpCompilationMode.LOW_LEVEL_API) }
}
}
return result
}