From 9542a8a07adf6ab91414bd0cb32d0a7af151bd84 Mon Sep 17 00:00:00 2001 From: Mikhail Glukhikh Date: Fri, 13 Jan 2023 11:10:05 +0100 Subject: [PATCH] Inherit LowLevelFirFrontendFacade from FirFrontendFacade to remove duplicates --- .../based/AbstractCompilerBasedTestForFir.kt | 41 ++----------------- .../test/frontend/fir/FirFrontendFacade.kt | 2 +- 2 files changed, 5 insertions(+), 38 deletions(-) diff --git a/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/compiler/based/AbstractCompilerBasedTestForFir.kt b/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/compiler/based/AbstractCompilerBasedTestForFir.kt index b9c6b0c9f1e..450f0645cf3 100644 --- a/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/compiler/based/AbstractCompilerBasedTestForFir.kt +++ b/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/compiler/based/AbstractCompilerBasedTestForFir.kt @@ -23,12 +23,11 @@ import org.jetbrains.kotlin.test.builders.TestConfigurationBuilder import org.jetbrains.kotlin.test.builders.firHandlersStep import org.jetbrains.kotlin.test.builders.testConfiguration 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.FirOutputArtifactImpl import org.jetbrains.kotlin.test.frontend.fir.FirOutputPartForDependsOnModule 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.TestModule import org.jetbrains.kotlin.test.services.* @@ -57,22 +56,9 @@ abstract class AbstractCompilerBasedTestForFir : AbstractCompilerBasedTest() { inner class LowLevelFirFrontendFacade( testServices: TestServices - ) : FrontendFacade(testServices, FrontendKinds.FIR) { - private val testModulesByName by lazy { testServices.moduleStructure.modules.associateBy { it.name } } - - override val directiveContainers: List - 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 - } - } + ) : FirFrontendFacade(testServices) { + override val additionalServices: List + get() = emptyList() override fun analyze(module: TestModule): FirOutputArtifact { val isMppSupported = module.languageVersionSettings.supportsFeature(LanguageFeature.MultiPlatformProjects) @@ -87,25 +73,6 @@ abstract class AbstractCompilerBasedTestForFir : AbstractCompilerBasedTest() { return FirOutputArtifactImpl(firOutputPartForDependsOnModules) } - private fun sortDependsOnTopologically(module: TestModule): List { - val sortedModules = mutableListOf() - val visitedModules = mutableSetOf() - val modulesQueue = ArrayDeque() - 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 { val moduleInfoProvider = testServices.ktModuleProvider val ktModule = moduleInfoProvider.getModule(module.name) as KtSourceModuleByCompilerConfiguration diff --git a/compiler/tests-common-new/tests/org/jetbrains/kotlin/test/frontend/fir/FirFrontendFacade.kt b/compiler/tests-common-new/tests/org/jetbrains/kotlin/test/frontend/fir/FirFrontendFacade.kt index f5e4aa341e4..15589404401 100644 --- a/compiler/tests-common-new/tests/org/jetbrains/kotlin/test/frontend/fir/FirFrontendFacade.kt +++ b/compiler/tests-common-new/tests/org/jetbrains/kotlin/test/frontend/fir/FirFrontendFacade.kt @@ -108,7 +108,7 @@ open class FirFrontendFacade( return FirOutputArtifactImpl(firOutputPartForDependsOnModules) } - private fun sortDependsOnTopologically(module: TestModule): List { + protected fun sortDependsOnTopologically(module: TestModule): List { val sortedModules = mutableListOf() val visitedModules = mutableSetOf() val modulesQueue = ArrayDeque()