[LL FIR] AbstractFirLazyBodiesCalculatorTest: add ability to suppress test

We have inconsistency in lazy body calculator, but only tests are
affected, because in the production we recreated bodies anyway

^KT-62840
This commit is contained in:
Dmitrii Gridin
2024-02-09 23:06:48 +01:00
committed by Space Team
parent 256d83b005
commit c0f4f7fefd
4 changed files with 23 additions and 0 deletions
@@ -20,10 +20,17 @@ import org.jetbrains.kotlin.fir.renderer.FirRenderer
import org.jetbrains.kotlin.fir.scopes.kotlinScopeProvider
import org.jetbrains.kotlin.fir.visitors.FirVisitorVoid
import org.jetbrains.kotlin.psi.KtFile
import org.jetbrains.kotlin.test.builders.TestConfigurationBuilder
import org.jetbrains.kotlin.test.directives.model.SimpleDirectivesContainer
import org.jetbrains.kotlin.test.model.TestModule
import org.jetbrains.kotlin.test.services.TestServices
abstract class AbstractFirLazyBodiesCalculatorTest : AbstractAnalysisApiBasedTest() {
override fun configureTest(builder: TestConfigurationBuilder) {
super.configureTest(builder)
builder.useDirectives(Directives)
}
private val lazyChecker = object : FirVisitorVoid() {
override fun visitElement(element: FirElement) {
TestCase.assertFalse("${FirLazyBlock::class.qualifiedName} should not present in the tree", element is FirLazyBlock)
@@ -33,6 +40,8 @@ abstract class AbstractFirLazyBodiesCalculatorTest : AbstractAnalysisApiBasedTes
}
override fun doTestByMainFile(mainFile: KtFile, mainModule: TestModule, testServices: TestServices) {
if (Directives.IGNORE_BODY_CALCULATOR in mainModule.directives) return
resolveWithClearCaches(mainFile) { firResolveSession ->
val session = firResolveSession.useSiteFirSession
val provider = session.kotlinScopeProvider
@@ -58,6 +67,10 @@ abstract class AbstractFirLazyBodiesCalculatorTest : AbstractAnalysisApiBasedTes
TestCase.assertEquals(/* expected = */ fullFirFileDump, /* actual = */ laziedFirFileDump)
}
}
private object Directives : SimpleDirectivesContainer() {
val IGNORE_BODY_CALCULATOR by stringDirective("Ignore body calculator")
}
}
abstract class AbstractFirSourceLazyBodiesCalculatorTest : AbstractFirLazyBodiesCalculatorTest() {