[Test] Correcly collect diagnostics in AA tests
One of the previous commits moved calculation of diagnostics from FirAnalyzerFacadeinto the separate test service, so it should be altered in AA tests too
This commit is contained in:
committed by
Nikolay Lunyak
parent
cb3f41f669
commit
1de8a1dda6
+3
-1
@@ -30,6 +30,7 @@ import org.jetbrains.kotlin.test.frontend.fir.FirFrontendFacade
|
|||||||
import org.jetbrains.kotlin.test.frontend.fir.FirOutputArtifact
|
import org.jetbrains.kotlin.test.frontend.fir.FirOutputArtifact
|
||||||
import org.jetbrains.kotlin.test.frontend.fir.FirOutputArtifactImpl
|
import org.jetbrains.kotlin.test.frontend.fir.FirOutputArtifactImpl
|
||||||
import org.jetbrains.kotlin.test.frontend.fir.FirOutputPartForDependsOnModule
|
import org.jetbrains.kotlin.test.frontend.fir.FirOutputPartForDependsOnModule
|
||||||
|
import org.jetbrains.kotlin.test.frontend.fir.handlers.FirDiagnosticCollectorService
|
||||||
import org.jetbrains.kotlin.test.model.DependencyKind
|
import org.jetbrains.kotlin.test.model.DependencyKind
|
||||||
import org.jetbrains.kotlin.test.model.FrontendKinds
|
import org.jetbrains.kotlin.test.model.FrontendKinds
|
||||||
import org.jetbrains.kotlin.test.model.TestModule
|
import org.jetbrains.kotlin.test.model.TestModule
|
||||||
@@ -52,6 +53,7 @@ abstract class AbstractCompilerBasedTestForFir : AbstractCompilerBasedTest() {
|
|||||||
registerAnalysisApiBaseTestServices(disposable, FirLowLevelCompilerBasedTestConfigurator)
|
registerAnalysisApiBaseTestServices(disposable, FirLowLevelCompilerBasedTestConfigurator)
|
||||||
useDirectives(SealedClassesInheritorsCaclulatorPreAnalysisHandler.Directives)
|
useDirectives(SealedClassesInheritorsCaclulatorPreAnalysisHandler.Directives)
|
||||||
usePreAnalysisHandlers(::SealedClassesInheritorsCaclulatorPreAnalysisHandler)
|
usePreAnalysisHandlers(::SealedClassesInheritorsCaclulatorPreAnalysisHandler)
|
||||||
|
useAdditionalServices(service<FirDiagnosticCollectorService>(::AnalysisApiFirDiagnosticCollectorService))
|
||||||
|
|
||||||
firHandlersStep {
|
firHandlersStep {
|
||||||
useHandlers(::LLDiagnosticParameterChecker)
|
useHandlers(::LLDiagnosticParameterChecker)
|
||||||
@@ -127,4 +129,4 @@ abstract class AbstractCompilerBasedTestForFir : AbstractCompilerBasedTest() {
|
|||||||
|
|
||||||
super.runTest(filePath)
|
super.runTest(filePath)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
-1
@@ -5,7 +5,6 @@
|
|||||||
|
|
||||||
package org.jetbrains.kotlin.analysis.low.level.api.fir.compiler.based
|
package org.jetbrains.kotlin.analysis.low.level.api.fir.compiler.based
|
||||||
|
|
||||||
import org.jetbrains.kotlin.analysis.utils.errors.withKtModuleEntry
|
|
||||||
import org.jetbrains.kotlin.diagnostics.*
|
import org.jetbrains.kotlin.diagnostics.*
|
||||||
import org.jetbrains.kotlin.diagnostics.rendering.RootDiagnosticRendererFactory
|
import org.jetbrains.kotlin.diagnostics.rendering.RootDiagnosticRendererFactory
|
||||||
import org.jetbrains.kotlin.fir.types.ConeKotlinType
|
import org.jetbrains.kotlin.fir.types.ConeKotlinType
|
||||||
|
|||||||
+18
-1
@@ -16,8 +16,14 @@ import org.jetbrains.kotlin.fir.pipeline.FirResult
|
|||||||
import org.jetbrains.kotlin.fir.pipeline.ModuleCompilerAnalyzedOutput
|
import org.jetbrains.kotlin.fir.pipeline.ModuleCompilerAnalyzedOutput
|
||||||
import org.jetbrains.kotlin.fir.psi
|
import org.jetbrains.kotlin.fir.psi
|
||||||
import org.jetbrains.kotlin.fir.resolve.ScopeSession
|
import org.jetbrains.kotlin.fir.resolve.ScopeSession
|
||||||
|
import org.jetbrains.kotlin.fir.util.listMultimapOf
|
||||||
|
import org.jetbrains.kotlin.fir.util.plusAssign
|
||||||
import org.jetbrains.kotlin.psi.KtFile
|
import org.jetbrains.kotlin.psi.KtFile
|
||||||
|
import org.jetbrains.kotlin.test.frontend.fir.FirOutputArtifact
|
||||||
|
import org.jetbrains.kotlin.test.frontend.fir.handlers.DiagnosticsMap
|
||||||
|
import org.jetbrains.kotlin.test.frontend.fir.handlers.FirDiagnosticCollectorService
|
||||||
import org.jetbrains.kotlin.test.model.TestFile
|
import org.jetbrains.kotlin.test.model.TestFile
|
||||||
|
import org.jetbrains.kotlin.test.services.TestServices
|
||||||
|
|
||||||
open class LowLevelFirAnalyzerFacade(
|
open class LowLevelFirAnalyzerFacade(
|
||||||
val firResolveSession: LLFirResolveSession,
|
val firResolveSession: LLFirResolveSession,
|
||||||
@@ -35,7 +41,6 @@ open class LowLevelFirAnalyzerFacade(
|
|||||||
|
|
||||||
private var resolved: Boolean = false
|
private var resolved: Boolean = false
|
||||||
|
|
||||||
// TODO: investigate
|
|
||||||
fun runCheckers(): Map<FirFile, List<KtDiagnostic>> {
|
fun runCheckers(): Map<FirFile, List<KtDiagnostic>> {
|
||||||
if (!resolved) {
|
if (!resolved) {
|
||||||
runResolution()
|
runResolution()
|
||||||
@@ -52,3 +57,15 @@ open class LowLevelFirAnalyzerFacade(
|
|||||||
|
|
||||||
override fun runResolution(): List<FirFile> = allFirFiles.values.toList()
|
override fun runResolution(): List<FirFile> = allFirFiles.values.toList()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
class AnalysisApiFirDiagnosticCollectorService(testServices: TestServices) : FirDiagnosticCollectorService(testServices) {
|
||||||
|
override fun getFrontendDiagnosticsForModule(info: FirOutputArtifact): DiagnosticsMap {
|
||||||
|
val result = listMultimapOf<FirFile, KtDiagnostic>()
|
||||||
|
for (part in info.partsForDependsOnModules) {
|
||||||
|
val facade = part.firAnalyzerFacade
|
||||||
|
require(facade is LowLevelFirAnalyzerFacade)
|
||||||
|
result += facade.runCheckers()
|
||||||
|
}
|
||||||
|
return result
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|||||||
+2
-3
@@ -61,7 +61,6 @@ import org.jetbrains.kotlin.test.utils.AbstractTwoAttributesMetaInfoProcessor
|
|||||||
import org.jetbrains.kotlin.test.utils.MultiModuleInfoDumper
|
import org.jetbrains.kotlin.test.utils.MultiModuleInfoDumper
|
||||||
import org.jetbrains.kotlin.util.OperatorNameConventions
|
import org.jetbrains.kotlin.util.OperatorNameConventions
|
||||||
import org.jetbrains.kotlin.util.capitalizeDecapitalize.toLowerCaseAsciiOnly
|
import org.jetbrains.kotlin.util.capitalizeDecapitalize.toLowerCaseAsciiOnly
|
||||||
import org.jetbrains.kotlin.utils.addToStdlib.getOrPut
|
|
||||||
|
|
||||||
class FullDiagnosticsRenderer(private val directive: SimpleDirective) {
|
class FullDiagnosticsRenderer(private val directive: SimpleDirective) {
|
||||||
private val dumper: MultiModuleInfoDumper = MultiModuleInfoDumper(moduleHeaderTemplate = "// -- Module: <%s> --")
|
private val dumper: MultiModuleInfoDumper = MultiModuleInfoDumper(moduleHeaderTemplate = "// -- Module: <%s> --")
|
||||||
@@ -605,10 +604,10 @@ fun KtDiagnostic.toMetaInfos(
|
|||||||
|
|
||||||
typealias DiagnosticsMap = Multimap<FirFile, KtDiagnostic, List<KtDiagnostic>>
|
typealias DiagnosticsMap = Multimap<FirFile, KtDiagnostic, List<KtDiagnostic>>
|
||||||
|
|
||||||
class FirDiagnosticCollectorService(val testServices: TestServices) : TestService {
|
open class FirDiagnosticCollectorService(val testServices: TestServices) : TestService {
|
||||||
private val cache: MutableMap<FirOutputArtifact, DiagnosticsMap> = mutableMapOf()
|
private val cache: MutableMap<FirOutputArtifact, DiagnosticsMap> = mutableMapOf()
|
||||||
|
|
||||||
fun getFrontendDiagnosticsForModule(info: FirOutputArtifact): DiagnosticsMap {
|
open fun getFrontendDiagnosticsForModule(info: FirOutputArtifact): DiagnosticsMap {
|
||||||
return cache.getOrPut(info) { computeDiagnostics(info) }
|
return cache.getOrPut(info) { computeDiagnostics(info) }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user