Inherit LowLevelFirFrontendFacade from FirFrontendFacade to remove duplicates
This commit is contained in:
committed by
Space Team
parent
c9a8f433fb
commit
9542a8a07a
+4
-37
@@ -23,12 +23,11 @@ import org.jetbrains.kotlin.test.builders.TestConfigurationBuilder
|
|||||||
import org.jetbrains.kotlin.test.builders.firHandlersStep
|
import org.jetbrains.kotlin.test.builders.firHandlersStep
|
||||||
import org.jetbrains.kotlin.test.builders.testConfiguration
|
import org.jetbrains.kotlin.test.builders.testConfiguration
|
||||||
import org.jetbrains.kotlin.test.directives.FirDiagnosticsDirectives
|
import org.jetbrains.kotlin.test.directives.FirDiagnosticsDirectives
|
||||||
import org.jetbrains.kotlin.test.directives.model.DirectivesContainer
|
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.model.DependencyKind
|
import org.jetbrains.kotlin.test.model.DependencyKind
|
||||||
import org.jetbrains.kotlin.test.model.FrontendFacade
|
|
||||||
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
|
||||||
import org.jetbrains.kotlin.test.services.*
|
import org.jetbrains.kotlin.test.services.*
|
||||||
@@ -57,22 +56,9 @@ abstract class AbstractCompilerBasedTestForFir : AbstractCompilerBasedTest() {
|
|||||||
|
|
||||||
inner class LowLevelFirFrontendFacade(
|
inner class LowLevelFirFrontendFacade(
|
||||||
testServices: TestServices
|
testServices: TestServices
|
||||||
) : FrontendFacade<FirOutputArtifact>(testServices, FrontendKinds.FIR) {
|
) : FirFrontendFacade(testServices) {
|
||||||
private val testModulesByName by lazy { testServices.moduleStructure.modules.associateBy { it.name } }
|
override val additionalServices: List<ServiceRegistrationData>
|
||||||
|
get() = emptyList()
|
||||||
override val directiveContainers: List<DirectivesContainer>
|
|
||||||
get() = listOf(FirDiagnosticsDirectives)
|
|
||||||
|
|
||||||
override fun shouldRunAnalysis(module: TestModule): Boolean {
|
|
||||||
if (!super.shouldRunAnalysis(module)) return false
|
|
||||||
|
|
||||||
return if (module.languageVersionSettings.supportsFeature(LanguageFeature.MultiPlatformProjects)) {
|
|
||||||
testServices.moduleStructure
|
|
||||||
.modules.none { testModule -> testModule.dependsOnDependencies.any { testModulesByName[it.moduleName] == module } }
|
|
||||||
} else {
|
|
||||||
true
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
override fun analyze(module: TestModule): FirOutputArtifact {
|
override fun analyze(module: TestModule): FirOutputArtifact {
|
||||||
val isMppSupported = module.languageVersionSettings.supportsFeature(LanguageFeature.MultiPlatformProjects)
|
val isMppSupported = module.languageVersionSettings.supportsFeature(LanguageFeature.MultiPlatformProjects)
|
||||||
@@ -87,25 +73,6 @@ abstract class AbstractCompilerBasedTestForFir : AbstractCompilerBasedTest() {
|
|||||||
return FirOutputArtifactImpl(firOutputPartForDependsOnModules)
|
return FirOutputArtifactImpl(firOutputPartForDependsOnModules)
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun sortDependsOnTopologically(module: TestModule): List<TestModule> {
|
|
||||||
val sortedModules = mutableListOf<TestModule>()
|
|
||||||
val visitedModules = mutableSetOf<TestModule>()
|
|
||||||
val modulesQueue = ArrayDeque<TestModule>()
|
|
||||||
modulesQueue.add(module)
|
|
||||||
|
|
||||||
while (modulesQueue.isNotEmpty()) {
|
|
||||||
val currentModule = modulesQueue.removeFirst()
|
|
||||||
if (!visitedModules.add(currentModule)) continue
|
|
||||||
sortedModules.add(currentModule)
|
|
||||||
|
|
||||||
for (dependency in currentModule.dependsOnDependencies) {
|
|
||||||
modulesQueue.add(testServices.dependencyProvider.getTestModule(dependency.moduleName))
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return sortedModules.reversed()
|
|
||||||
}
|
|
||||||
|
|
||||||
private fun analyzeDependsOnModule(module: TestModule): FirOutputPartForDependsOnModule {
|
private fun analyzeDependsOnModule(module: TestModule): FirOutputPartForDependsOnModule {
|
||||||
val moduleInfoProvider = testServices.ktModuleProvider
|
val moduleInfoProvider = testServices.ktModuleProvider
|
||||||
val ktModule = moduleInfoProvider.getModule(module.name) as KtSourceModuleByCompilerConfiguration
|
val ktModule = moduleInfoProvider.getModule(module.name) as KtSourceModuleByCompilerConfiguration
|
||||||
|
|||||||
+1
-1
@@ -108,7 +108,7 @@ open class FirFrontendFacade(
|
|||||||
return FirOutputArtifactImpl(firOutputPartForDependsOnModules)
|
return FirOutputArtifactImpl(firOutputPartForDependsOnModules)
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun sortDependsOnTopologically(module: TestModule): List<TestModule> {
|
protected fun sortDependsOnTopologically(module: TestModule): List<TestModule> {
|
||||||
val sortedModules = mutableListOf<TestModule>()
|
val sortedModules = mutableListOf<TestModule>()
|
||||||
val visitedModules = mutableSetOf<TestModule>()
|
val visitedModules = mutableSetOf<TestModule>()
|
||||||
val modulesQueue = ArrayDeque<TestModule>()
|
val modulesQueue = ArrayDeque<TestModule>()
|
||||||
|
|||||||
Reference in New Issue
Block a user