[LL FIR] AbstractLowLevelApiLastModuleFirstFileTest: replace moduleStructure with testModule

We can get the module structure from `TestServices`,
so current file is more preferable

^KT-62892
This commit is contained in:
Dmitrii Gridin
2024-01-03 15:07:56 +01:00
committed by Space Team
parent 7efbcad121
commit 4cb75490db
6 changed files with 27 additions and 19 deletions
@@ -1,5 +1,5 @@
/* /*
* Copyright 2010-2023 JetBrains s.r.o. and Kotlin Programming Language contributors. * Copyright 2010-2024 JetBrains s.r.o. and Kotlin Programming Language contributors.
* Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file. * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
*/ */
@@ -13,17 +13,18 @@ import org.jetbrains.kotlin.psi.KtFile
import org.jetbrains.kotlin.test.builders.TestConfigurationBuilder import org.jetbrains.kotlin.test.builders.TestConfigurationBuilder
import org.jetbrains.kotlin.test.directives.ConfigurationDirectives.WITH_STDLIB import org.jetbrains.kotlin.test.directives.ConfigurationDirectives.WITH_STDLIB
import org.jetbrains.kotlin.test.directives.JvmEnvironmentConfigurationDirectives.NO_RUNTIME import org.jetbrains.kotlin.test.directives.JvmEnvironmentConfigurationDirectives.NO_RUNTIME
import org.jetbrains.kotlin.test.services.TestModuleStructure import org.jetbrains.kotlin.test.model.TestModule
import org.jetbrains.kotlin.test.services.TestServices import org.jetbrains.kotlin.test.services.TestServices
import org.jetbrains.kotlin.test.services.moduleStructure
abstract class AbstractFirLazyDeclarationResolveTest : AbstractFirLazyDeclarationResolveOverAllPhasesTest() { abstract class AbstractFirLazyDeclarationResolveTest : AbstractFirLazyDeclarationResolveOverAllPhasesTest() {
override fun checkSession(firSession: LLFirResolveSession) { override fun checkSession(firSession: LLFirResolveSession) {
require(firSession.isSourceSession) require(firSession.isSourceSession)
} }
override fun doTestByFileStructure(ktFile: KtFile, moduleStructure: TestModuleStructure, testServices: TestServices) { override fun doTestByFileStructure(ktFile: KtFile, testModule: TestModule, testServices: TestServices) {
doLazyResolveTest(ktFile, testServices, renderAllFiles = true) { firResolveSession -> doLazyResolveTest(ktFile, testServices, renderAllFiles = true) { firResolveSession ->
findFirDeclarationToResolve(ktFile, moduleStructure, testServices, firResolveSession) findFirDeclarationToResolve(ktFile, testServices.moduleStructure, testServices, firResolveSession)
} }
} }
@@ -1,5 +1,5 @@
/* /*
* Copyright 2010-2023 JetBrains s.r.o. and Kotlin Programming Language contributors. * Copyright 2010-2024 JetBrains s.r.o. and Kotlin Programming Language contributors.
* Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file. * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
*/ */
@@ -31,9 +31,10 @@ import org.jetbrains.kotlin.fir.visitors.FirVisitorVoid
import org.jetbrains.kotlin.psi.KtFile import org.jetbrains.kotlin.psi.KtFile
import org.jetbrains.kotlin.test.builders.TestConfigurationBuilder import org.jetbrains.kotlin.test.builders.TestConfigurationBuilder
import org.jetbrains.kotlin.test.directives.model.SimpleDirectivesContainer import org.jetbrains.kotlin.test.directives.model.SimpleDirectivesContainer
import org.jetbrains.kotlin.test.services.TestModuleStructure import org.jetbrains.kotlin.test.model.TestModule
import org.jetbrains.kotlin.test.services.TestServices import org.jetbrains.kotlin.test.services.TestServices
import org.jetbrains.kotlin.test.services.assertions import org.jetbrains.kotlin.test.services.assertions
import org.jetbrains.kotlin.test.services.moduleStructure
/** /**
* This test exists to: * This test exists to:
@@ -43,12 +44,13 @@ import org.jetbrains.kotlin.test.services.assertions
* It collects all type annotations from the selected declaration and resolves them * It collects all type annotations from the selected declaration and resolves them
*/ */
abstract class AbstractLazyTypeAnnotationsTest : AbstractFirLazyDeclarationResolveTestCase() { abstract class AbstractLazyTypeAnnotationsTest : AbstractFirLazyDeclarationResolveTestCase() {
override fun doTestByFileStructure(ktFile: KtFile, moduleStructure: TestModuleStructure, testServices: TestServices) { override fun doTestByFileStructure(ktFile: KtFile, testModule: TestModule, testServices: TestServices) {
val builderBeforeAnnotationResolve = StringBuilder() val builderBeforeAnnotationResolve = StringBuilder()
val builderAfterAnnotationResolve = StringBuilder() val builderAfterAnnotationResolve = StringBuilder()
val allKtFiles = testServices.allKtFiles() val allKtFiles = testServices.allKtFiles()
resolveWithClearCaches(ktFile) { session -> resolveWithClearCaches(ktFile) { session ->
val moduleStructure = testServices.moduleStructure
val (declaration, resolver) = findFirDeclarationToResolve(ktFile, moduleStructure, testServices, session) val (declaration, resolver) = findFirDeclarationToResolve(ktFile, moduleStructure, testServices, session)
resolver.invoke(FirResolvePhase.TYPES) resolver.invoke(FirResolvePhase.TYPES)
@@ -1,5 +1,5 @@
/* /*
* Copyright 2010-2023 JetBrains s.r.o. and Kotlin Programming Language contributors. * Copyright 2010-2024 JetBrains s.r.o. and Kotlin Programming Language contributors.
* Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file. * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
*/ */
@@ -16,9 +16,11 @@ import org.jetbrains.kotlin.platform.js.JsPlatforms
import org.jetbrains.kotlin.psi.* import org.jetbrains.kotlin.psi.*
import org.jetbrains.kotlin.test.builders.TestConfigurationBuilder import org.jetbrains.kotlin.test.builders.TestConfigurationBuilder
import org.jetbrains.kotlin.test.directives.model.SimpleDirectivesContainer import org.jetbrains.kotlin.test.directives.model.SimpleDirectivesContainer
import org.jetbrains.kotlin.test.model.TestModule
import org.jetbrains.kotlin.test.services.TestModuleStructure import org.jetbrains.kotlin.test.services.TestModuleStructure
import org.jetbrains.kotlin.test.services.TestServices import org.jetbrains.kotlin.test.services.TestServices
import org.jetbrains.kotlin.test.services.assertions import org.jetbrains.kotlin.test.services.assertions
import org.jetbrains.kotlin.test.services.moduleStructure
import org.jetbrains.kotlin.test.services.service import org.jetbrains.kotlin.test.services.service
abstract class AbstractLibraryGetOrBuildFirTest : AbstractLowLevelApiLastModuleFirstFileTest() { abstract class AbstractLibraryGetOrBuildFirTest : AbstractLowLevelApiLastModuleFirstFileTest() {
@@ -34,8 +36,8 @@ abstract class AbstractLibraryGetOrBuildFirTest : AbstractLowLevelApiLastModuleF
} }
} }
override fun doTestByFileStructure(ktFile: KtFile, moduleStructure: TestModuleStructure, testServices: TestServices) { override fun doTestByFileStructure(ktFile: KtFile, testModule: TestModule, testServices: TestServices) {
val declaration = getElementToSearch(ktFile, moduleStructure) val declaration = getElementToSearch(ktFile, testServices.moduleStructure)
val module = ProjectStructureProvider.getModule(ktFile.project, ktFile, contextualModule = null) val module = ProjectStructureProvider.getModule(ktFile.project, ktFile, contextualModule = null)
val resolveSession = LLFirResolveSessionService.getInstance(ktFile.project).getFirResolveSessionForBinaryModule(module) val resolveSession = LLFirResolveSessionService.getInstance(ktFile.project).getFirResolveSessionForBinaryModule(module)
@@ -1,5 +1,5 @@
/* /*
* Copyright 2010-2023 JetBrains s.r.o. and Kotlin Programming Language contributors. * Copyright 2010-2024 JetBrains s.r.o. and Kotlin Programming Language contributors.
* Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file. * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
*/ */
@@ -22,8 +22,9 @@ import org.jetbrains.kotlin.psi.*
import org.jetbrains.kotlin.test.builders.TestConfigurationBuilder import org.jetbrains.kotlin.test.builders.TestConfigurationBuilder
import org.jetbrains.kotlin.test.directives.model.SimpleDirectivesContainer import org.jetbrains.kotlin.test.directives.model.SimpleDirectivesContainer
import org.jetbrains.kotlin.test.directives.model.singleValue import org.jetbrains.kotlin.test.directives.model.singleValue
import org.jetbrains.kotlin.test.services.TestModuleStructure import org.jetbrains.kotlin.test.model.TestModule
import org.jetbrains.kotlin.test.services.TestServices import org.jetbrains.kotlin.test.services.TestServices
import org.jetbrains.kotlin.test.services.moduleStructure
abstract class AbstractStdLibSourcesLazyDeclarationResolveTest : AbstractFirLazyDeclarationResolveOverAllPhasesTest() { abstract class AbstractStdLibSourcesLazyDeclarationResolveTest : AbstractFirLazyDeclarationResolveOverAllPhasesTest() {
override fun checkSession(firSession: LLFirResolveSession) { override fun checkSession(firSession: LLFirResolveSession) {
@@ -37,8 +38,9 @@ abstract class AbstractStdLibSourcesLazyDeclarationResolveTest : AbstractFirLazy
override val configurator get() = AnalysisApiFirStdlibSourceTestConfigurator override val configurator get() = AnalysisApiFirStdlibSourceTestConfigurator
override fun doTestByFileStructure(ktFile: KtFile, moduleStructure: TestModuleStructure, testServices: TestServices) { override fun doTestByFileStructure(ktFile: KtFile, testModule: TestModule, testServices: TestServices) {
val project = ktFile.project val project = ktFile.project
val moduleStructure = testServices.moduleStructure
val classId = moduleStructure.allDirectives.singleValue(Directives.CLASS_ID).let(ClassId::fromString) val classId = moduleStructure.allDirectives.singleValue(Directives.CLASS_ID).let(ClassId::fromString)
val module = ProjectStructureProvider.getModule(project, ktFile, contextualModule = null) val module = ProjectStructureProvider.getModule(project, ktFile, contextualModule = null)
val resolveSession = LLFirResolveSessionService.getInstance(project).getFirResolveSession(module) val resolveSession = LLFirResolveSessionService.getInstance(project).getFirResolveSession(module)
@@ -1,5 +1,5 @@
/* /*
* Copyright 2010-2023 JetBrains s.r.o. and Kotlin Programming Language contributors. * Copyright 2010-2024 JetBrains s.r.o. and Kotlin Programming Language contributors.
* Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file. * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
*/ */
@@ -26,7 +26,7 @@ import org.jetbrains.kotlin.fir.symbols.impl.FirPropertySymbol
import org.jetbrains.kotlin.fir.symbols.lazyResolveToPhase import org.jetbrains.kotlin.fir.symbols.lazyResolveToPhase
import org.jetbrains.kotlin.psi.KtClassOrObject import org.jetbrains.kotlin.psi.KtClassOrObject
import org.jetbrains.kotlin.psi.KtFile import org.jetbrains.kotlin.psi.KtFile
import org.jetbrains.kotlin.test.services.TestModuleStructure import org.jetbrains.kotlin.test.model.TestModule
import org.jetbrains.kotlin.test.services.TestServices import org.jetbrains.kotlin.test.services.TestServices
import org.jetbrains.kotlin.test.services.assertions import org.jetbrains.kotlin.test.services.assertions
@@ -34,7 +34,7 @@ import org.jetbrains.kotlin.test.services.assertions
* This test exists to check lazy resolution for fake overrides * This test exists to check lazy resolution for fake overrides
*/ */
abstract class AbstractLazyDeclarationResolveScopeBasedTest : AbstractLowLevelApiLastModuleFirstFileTest() { abstract class AbstractLazyDeclarationResolveScopeBasedTest : AbstractLowLevelApiLastModuleFirstFileTest() {
override fun doTestByFileStructure(ktFile: KtFile, moduleStructure: TestModuleStructure, testServices: TestServices) { override fun doTestByFileStructure(ktFile: KtFile, testModule: TestModule, testServices: TestServices) {
val classOrObject = testServices.expressionMarkerProvider.getElementOfTypeAtCaret<KtClassOrObject>(ktFile) val classOrObject = testServices.expressionMarkerProvider.getElementOfTypeAtCaret<KtClassOrObject>(ktFile)
resolveWithClearCaches(classOrObject) { session -> resolveWithClearCaches(classOrObject) { session ->
val classSymbol = classOrObject.resolveToFirSymbolOfType<FirClassSymbol<*>>(session) val classSymbol = classOrObject.resolveToFirSymbolOfType<FirClassSymbol<*>>(session)
@@ -1,5 +1,5 @@
/* /*
* Copyright 2010-2023 JetBrains s.r.o. and Kotlin Programming Language contributors. * Copyright 2010-2024 JetBrains s.r.o. and Kotlin Programming Language contributors.
* Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file. * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
*/ */
@@ -8,6 +8,7 @@ package org.jetbrains.kotlin.analysis.low.level.api.fir.test.base
import org.jetbrains.kotlin.analysis.test.framework.base.AbstractAnalysisApiBasedTest import org.jetbrains.kotlin.analysis.test.framework.base.AbstractAnalysisApiBasedTest
import org.jetbrains.kotlin.analysis.test.framework.project.structure.ktModuleProvider import org.jetbrains.kotlin.analysis.test.framework.project.structure.ktModuleProvider
import org.jetbrains.kotlin.psi.KtFile import org.jetbrains.kotlin.psi.KtFile
import org.jetbrains.kotlin.test.model.TestModule
import org.jetbrains.kotlin.test.services.TestModuleStructure import org.jetbrains.kotlin.test.services.TestModuleStructure
import org.jetbrains.kotlin.test.services.TestServices import org.jetbrains.kotlin.test.services.TestServices
@@ -15,8 +16,8 @@ abstract class AbstractLowLevelApiLastModuleFirstFileTest : AbstractAnalysisApiB
final override fun doTestByModuleStructure(moduleStructure: TestModuleStructure, testServices: TestServices) { final override fun doTestByModuleStructure(moduleStructure: TestModuleStructure, testServices: TestServices) {
val lastModule = moduleStructure.modules.last() val lastModule = moduleStructure.modules.last()
val firstKtFileFile = testServices.ktModuleProvider.getModuleFiles(lastModule).firstNotNullOf { it as? KtFile } val firstKtFileFile = testServices.ktModuleProvider.getModuleFiles(lastModule).firstNotNullOf { it as? KtFile }
doTestByFileStructure(firstKtFileFile, moduleStructure, testServices) doTestByFileStructure(firstKtFileFile, lastModule, testServices)
} }
abstract fun doTestByFileStructure(ktFile: KtFile, moduleStructure: TestModuleStructure, testServices: TestServices) abstract fun doTestByFileStructure(ktFile: KtFile, testModule: TestModule, testServices: TestServices)
} }