[FIR] Add ability to register extension points in diagnostic tests
This commit is contained in:
+10
-2
@@ -27,6 +27,8 @@ import org.jetbrains.kotlin.fir.analysis.diagnostics.FirErrors
|
|||||||
import org.jetbrains.kotlin.fir.analysis.diagnostics.FirPsiDiagnostic
|
import org.jetbrains.kotlin.fir.analysis.diagnostics.FirPsiDiagnostic
|
||||||
import org.jetbrains.kotlin.fir.builder.RawFirBuilder
|
import org.jetbrains.kotlin.fir.builder.RawFirBuilder
|
||||||
import org.jetbrains.kotlin.fir.declarations.FirFile
|
import org.jetbrains.kotlin.fir.declarations.FirFile
|
||||||
|
import org.jetbrains.kotlin.fir.extensions.FirExtensionPointService
|
||||||
|
import org.jetbrains.kotlin.fir.extensions.extensionPointService
|
||||||
import org.jetbrains.kotlin.fir.java.FirJavaModuleBasedSession
|
import org.jetbrains.kotlin.fir.java.FirJavaModuleBasedSession
|
||||||
import org.jetbrains.kotlin.fir.java.FirLibrarySession
|
import org.jetbrains.kotlin.fir.java.FirLibrarySession
|
||||||
import org.jetbrains.kotlin.fir.java.FirProjectSessionProvider
|
import org.jetbrains.kotlin.fir.java.FirProjectSessionProvider
|
||||||
@@ -76,14 +78,18 @@ abstract class AbstractFirBaseDiagnosticsTest : BaseDiagnosticsTest() {
|
|||||||
FirLibrarySession.create(
|
FirLibrarySession.create(
|
||||||
builtInsModuleInfo, sessionProvider, allProjectScope, project,
|
builtInsModuleInfo, sessionProvider, allProjectScope, project,
|
||||||
environment.createPackagePartProvider(allProjectScope)
|
environment.createPackagePartProvider(allProjectScope)
|
||||||
)
|
).also {
|
||||||
|
registerFirExtensions(it.extensionPointService)
|
||||||
|
}
|
||||||
|
|
||||||
val configToSession = modules.mapValues { (config, info) ->
|
val configToSession = modules.mapValues { (config, info) ->
|
||||||
val moduleFiles = groupedByModule.getValue(config)
|
val moduleFiles = groupedByModule.getValue(config)
|
||||||
val scope = TopDownAnalyzerFacadeForJVM.newModuleSearchScope(
|
val scope = TopDownAnalyzerFacadeForJVM.newModuleSearchScope(
|
||||||
project,
|
project,
|
||||||
moduleFiles.mapNotNull { it.ktFile })
|
moduleFiles.mapNotNull { it.ktFile })
|
||||||
FirJavaModuleBasedSession(info, sessionProvider, scope)
|
FirJavaModuleBasedSession(info, sessionProvider, scope).also {
|
||||||
|
registerFirExtensions(it.extensionPointService)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
val firFilesPerSession = mutableMapOf<FirSession, List<FirFile>>()
|
val firFilesPerSession = mutableMapOf<FirSession, List<FirFile>>()
|
||||||
@@ -102,6 +108,8 @@ abstract class AbstractFirBaseDiagnosticsTest : BaseDiagnosticsTest() {
|
|||||||
runAnalysis(testDataFile, files, firFilesPerSession)
|
runAnalysis(testDataFile, files, firFilesPerSession)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
open fun registerFirExtensions(service: FirExtensionPointService) {}
|
||||||
|
|
||||||
private fun mapKtFilesToFirFiles(session: FirSession, ktFiles: List<KtFile>, firFiles: MutableList<FirFile>, useLightTree: Boolean) {
|
private fun mapKtFilesToFirFiles(session: FirSession, ktFiles: List<KtFile>, firFiles: MutableList<FirFile>, useLightTree: Boolean) {
|
||||||
val firProvider = (session.firProvider as FirProviderImpl)
|
val firProvider = (session.firProvider as FirProviderImpl)
|
||||||
if (useLightTree) {
|
if (useLightTree) {
|
||||||
|
|||||||
Reference in New Issue
Block a user