[LL FIR] AbstractCompilerBasedTestForFir: convert receiver to parameter

to allow using super call from implementations

^KT-66232
This commit is contained in:
Dmitrii Gridin
2024-03-01 15:36:05 +01:00
committed by Space Team
parent 4b5eac7816
commit d6b3f6f352
8 changed files with 82 additions and 60 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.
*/ */
@@ -19,29 +19,34 @@ import org.jetbrains.kotlin.test.runners.configurationForClassicAndFirTestsAlong
import org.jetbrains.kotlin.utils.bind import org.jetbrains.kotlin.utils.bind
abstract class AbstractLLFirNativeTestBase : AbstractCompilerBasedTestForFir() { abstract class AbstractLLFirNativeTestBase : AbstractCompilerBasedTestForFir() {
override fun configureTest(builder: TestConfigurationBuilder) {
protected fun TestConfigurationBuilder.baseConfiguration() { with(builder) {
globalDefaults { globalDefaults {
targetPlatform = NativePlatforms.unspecifiedNativePlatform targetPlatform = NativePlatforms.unspecifiedNativePlatform
} }
baseFirNativeDiagnosticTestConfiguration() baseFirNativeDiagnosticTestConfiguration()
configurationForClassicAndFirTestsAlongside(::ReversedFirIdenticalChecker) configurationForClassicAndFirTestsAlongside(::ReversedFirIdenticalChecker)
} }
} }
}
abstract class AbstractLLFirNativeTest : AbstractLLFirNativeTestBase() { abstract class AbstractLLFirNativeTest : AbstractLLFirNativeTestBase() {
override fun TestConfigurationBuilder.configureTest() { override fun configureTest(builder: TestConfigurationBuilder) {
with(builder) {
baseNativeDiagnosticTestConfiguration(::LowLevelFirFrontendFacade.bind(LLFirAnalyzerFacadeFactoryWithoutPreresolve)) baseNativeDiagnosticTestConfiguration(::LowLevelFirFrontendFacade.bind(LLFirAnalyzerFacadeFactoryWithoutPreresolve))
baseConfiguration() super.configureTest(builder)
useAfterAnalysisCheckers(::LLFirOnlyNonReversedTestSuppressor) useAfterAnalysisCheckers(::LLFirOnlyNonReversedTestSuppressor)
} }
} }
}
abstract class AbstractLLFirReversedNativeTest : AbstractLLFirNativeTestBase() { abstract class AbstractLLFirReversedNativeTest : AbstractLLFirNativeTestBase() {
override fun TestConfigurationBuilder.configureTest() { override fun configureTest(builder: TestConfigurationBuilder) {
with(builder) {
baseNativeDiagnosticTestConfiguration(::LowLevelFirFrontendFacade.bind(LLFirAnalyzerFacadeFactoryWithPreresolveInReversedOrder)) baseNativeDiagnosticTestConfiguration(::LowLevelFirFrontendFacade.bind(LLFirAnalyzerFacadeFactoryWithPreresolveInReversedOrder))
baseConfiguration() super.configureTest(builder)
useAfterAnalysisCheckers(::LLFirOnlyReversedTestSuppressor) useAfterAnalysisCheckers(::LLFirOnlyReversedTestSuppressor)
} }
} }
}
@@ -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.
*/ */
@@ -49,7 +49,7 @@ abstract class AbstractCompilerBasedTestForFir : AbstractCompilerBasedTest() {
} }
FirLowLevelCompilerBasedTestConfigurator.configureTest(this, disposable) FirLowLevelCompilerBasedTestConfigurator.configureTest(this, disposable)
configureTest() configureTest(this)
defaultConfiguration(this) defaultConfiguration(this)
registerAnalysisApiBaseTestServices(disposable, FirLowLevelCompilerBasedTestConfigurator) registerAnalysisApiBaseTestServices(disposable, FirLowLevelCompilerBasedTestConfigurator)
useDirectives(SealedClassesInheritorsCalculatorPreAnalysisHandler.Directives) useDirectives(SealedClassesInheritorsCalculatorPreAnalysisHandler.Directives)
@@ -72,7 +72,7 @@ abstract class AbstractCompilerBasedTestForFir : AbstractCompilerBasedTest() {
useAfterAnalysisCheckers(::LLFirTestSuppressor) useAfterAnalysisCheckers(::LLFirTestSuppressor)
} }
open fun TestConfigurationBuilder.configureTest() {} abstract fun configureTest(builder: TestConfigurationBuilder)
inner class LowLevelFirFrontendFacade( inner class LowLevelFirFrontendFacade(
testServices: TestServices, testServices: TestServices,
@@ -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.
*/ */
@@ -20,15 +20,18 @@ import org.jetbrains.kotlin.test.services.moduleStructure
import org.jetbrains.kotlin.utils.bind import org.jetbrains.kotlin.utils.bind
abstract class AbstractDiagnosticCompilerTestDataTest : AbstractCompilerBasedTestForFir() { abstract class AbstractDiagnosticCompilerTestDataTest : AbstractCompilerBasedTestForFir() {
override fun TestConfigurationBuilder.configureTest() { override fun configureTest(builder: TestConfigurationBuilder) {
with(builder) {
baseFirDiagnosticTestConfiguration( baseFirDiagnosticTestConfiguration(
frontendFacade = ::LowLevelFirFrontendFacade.bind(LLFirAnalyzerFacadeFactoryWithoutPreresolve), frontendFacade = ::LowLevelFirFrontendFacade.bind(LLFirAnalyzerFacadeFactoryWithoutPreresolve),
testDataConsistencyHandler = ::ReversedFirIdenticalChecker, testDataConsistencyHandler = ::ReversedFirIdenticalChecker,
) )
useAfterAnalysisCheckers(::ContractViolationSuppressor) useAfterAnalysisCheckers(::ContractViolationSuppressor)
useAfterAnalysisCheckers(::LLFirOnlyNonReversedTestSuppressor) useAfterAnalysisCheckers(::LLFirOnlyNonReversedTestSuppressor)
} }
} }
}
private class ContractViolationSuppressor(testServices: TestServices) : AfterAnalysisChecker(testServices) { private class ContractViolationSuppressor(testServices: TestServices) : AfterAnalysisChecker(testServices) {
override val directiveContainers: List<DirectivesContainer> get() = listOf(Companion) override val directiveContainers: List<DirectivesContainer> get() = listOf(Companion)
@@ -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.
*/ */
@@ -11,9 +11,11 @@ import org.jetbrains.kotlin.test.builders.TestConfigurationBuilder
import org.jetbrains.kotlin.utils.bind import org.jetbrains.kotlin.utils.bind
abstract class AbstractLLFirBlackBoxCodegenBasedTest : AbstractLLFirBlackBoxCodegenBasedTestBase() { abstract class AbstractLLFirBlackBoxCodegenBasedTest : AbstractLLFirBlackBoxCodegenBasedTestBase() {
override fun TestConfigurationBuilder.configureTest() { override fun configureTest(builder: TestConfigurationBuilder) {
with(builder) {
facadeStep(::LowLevelFirFrontendFacade.bind(LLFirAnalyzerFacadeFactoryWithoutPreresolve)) facadeStep(::LowLevelFirFrontendFacade.bind(LLFirAnalyzerFacadeFactoryWithoutPreresolve))
baseConfiguration() baseConfiguration()
useAfterAnalysisCheckers(::LLFirOnlyNonReversedTestSuppressor) useAfterAnalysisCheckers(::LLFirOnlyNonReversedTestSuppressor)
} }
} }
}
@@ -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,11 +13,16 @@ import org.jetbrains.kotlin.test.runners.baseFirSpecDiagnosticTestConfiguration
import org.jetbrains.kotlin.utils.bind import org.jetbrains.kotlin.utils.bind
abstract class AbstractLLFirDiagnosticCompilerTestDataSpecTest : AbstractCompilerBasedTestForFir() { abstract class AbstractLLFirDiagnosticCompilerTestDataSpecTest : AbstractCompilerBasedTestForFir() {
override fun TestConfigurationBuilder.configureTest() { override fun configureTest(builder: TestConfigurationBuilder) {
baseFirDiagnosticTestConfiguration(frontendFacade = ::LowLevelFirFrontendFacade.bind(LLFirAnalyzerFacadeFactoryWithoutPreresolve)) with(builder) {
baseFirDiagnosticTestConfiguration(
frontendFacade = ::LowLevelFirFrontendFacade.bind(LLFirAnalyzerFacadeFactoryWithoutPreresolve),
)
baseFirSpecDiagnosticTestConfigurationForIde() baseFirSpecDiagnosticTestConfigurationForIde()
} }
} }
}
fun TestConfigurationBuilder.baseFirSpecDiagnosticTestConfigurationForIde() { fun TestConfigurationBuilder.baseFirSpecDiagnosticTestConfigurationForIde() {
baseFirSpecDiagnosticTestConfiguration() baseFirSpecDiagnosticTestConfiguration()
@@ -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,13 +13,16 @@ import org.jetbrains.kotlin.test.runners.baseFirDiagnosticTestConfiguration
import org.jetbrains.kotlin.utils.bind import org.jetbrains.kotlin.utils.bind
abstract class AbstractLLFirPreresolvedReversedDiagnosticCompilerTestDataSpecTest : AbstractCompilerBasedTestForFir() { abstract class AbstractLLFirPreresolvedReversedDiagnosticCompilerTestDataSpecTest : AbstractCompilerBasedTestForFir() {
override fun TestConfigurationBuilder.configureTest() { override fun configureTest(builder: TestConfigurationBuilder) {
with(builder) {
baseFirDiagnosticTestConfiguration( baseFirDiagnosticTestConfiguration(
frontendFacade = ::LowLevelFirFrontendFacade.bind(LLFirAnalyzerFacadeFactoryWithPreresolveInReversedOrder) frontendFacade = ::LowLevelFirFrontendFacade.bind(LLFirAnalyzerFacadeFactoryWithPreresolveInReversedOrder),
) )
baseFirSpecDiagnosticTestConfigurationForIde() baseFirSpecDiagnosticTestConfigurationForIde()
useAfterAnalysisCheckers(::LLFirOnlyReversedTestSuppressor) useAfterAnalysisCheckers(::LLFirOnlyReversedTestSuppressor)
useMetaTestConfigurators(::ReversedDiagnosticsConfigurator) useMetaTestConfigurators(::ReversedDiagnosticsConfigurator)
useAfterAnalysisCheckers(::ReversedFirIdenticalChecker) useAfterAnalysisCheckers(::ReversedFirIdenticalChecker)
} }
} }
}
@@ -1,26 +1,27 @@
/* /*
* 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.
*/ */
package org.jetbrains.kotlin.analysis.low.level.api.fir.diagnostic.compiler.based package org.jetbrains.kotlin.analysis.low.level.api.fir.diagnostic.compiler.based
import org.jetbrains.kotlin.analysis.low.level.api.fir.LLFirOnlyReversedTestSuppressor import org.jetbrains.kotlin.analysis.low.level.api.fir.LLFirOnlyReversedTestSuppressor
import java.io.File
import org.jetbrains.kotlin.analysis.low.level.api.fir.compiler.based.AbstractCompilerBasedTestForFir import org.jetbrains.kotlin.analysis.low.level.api.fir.compiler.based.AbstractCompilerBasedTestForFir
import org.jetbrains.kotlin.analysis.low.level.api.fir.diagnostic.compiler.based.facades.LLFirAnalyzerFacadeFactoryWithPreresolveInReversedOrder import org.jetbrains.kotlin.analysis.low.level.api.fir.diagnostic.compiler.based.facades.LLFirAnalyzerFacadeFactoryWithPreresolveInReversedOrder
import org.jetbrains.kotlin.test.builders.TestConfigurationBuilder import org.jetbrains.kotlin.test.builders.TestConfigurationBuilder
import org.jetbrains.kotlin.test.runners.baseFirDiagnosticTestConfiguration
import org.jetbrains.kotlin.test.services.TestServices
import org.jetbrains.kotlin.test.frontend.fir.handlers.AbstractFirIdenticalChecker import org.jetbrains.kotlin.test.frontend.fir.handlers.AbstractFirIdenticalChecker
import org.jetbrains.kotlin.test.runners.baseFirDiagnosticTestConfiguration
import org.jetbrains.kotlin.test.services.MetaTestConfigurator import org.jetbrains.kotlin.test.services.MetaTestConfigurator
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.utils.firTestDataFile import org.jetbrains.kotlin.test.utils.firTestDataFile
import org.jetbrains.kotlin.test.utils.llFirTestDataFile import org.jetbrains.kotlin.test.utils.llFirTestDataFile
import org.jetbrains.kotlin.utils.bind import org.jetbrains.kotlin.utils.bind
import java.io.File
abstract class AbstractLLFirPreresolvedReversedDiagnosticCompilerTestDataTest : AbstractCompilerBasedTestForFir() { abstract class AbstractLLFirPreresolvedReversedDiagnosticCompilerTestDataTest : AbstractCompilerBasedTestForFir() {
override fun TestConfigurationBuilder.configureTest() { override fun configureTest(builder: TestConfigurationBuilder) {
with(builder) {
baseFirDiagnosticTestConfiguration( baseFirDiagnosticTestConfiguration(
frontendFacade = ::LowLevelFirFrontendFacade.bind(LLFirAnalyzerFacadeFactoryWithPreresolveInReversedOrder), frontendFacade = ::LowLevelFirFrontendFacade.bind(LLFirAnalyzerFacadeFactoryWithPreresolveInReversedOrder),
testDataConsistencyHandler = ::ReversedFirIdenticalChecker, testDataConsistencyHandler = ::ReversedFirIdenticalChecker,
@@ -30,6 +31,7 @@ abstract class AbstractLLFirPreresolvedReversedDiagnosticCompilerTestDataTest :
useMetaTestConfigurators(::ReversedDiagnosticsConfigurator) useMetaTestConfigurators(::ReversedDiagnosticsConfigurator)
} }
} }
}
internal class ReversedDiagnosticsConfigurator(testServices: TestServices) : MetaTestConfigurator(testServices) { internal class ReversedDiagnosticsConfigurator(testServices: TestServices) : MetaTestConfigurator(testServices) {
override fun transformTestDataPath(testDataFileName: String): String { override fun transformTestDataPath(testDataFileName: String): String {
@@ -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.
*/ */
@@ -11,9 +11,11 @@ import org.jetbrains.kotlin.test.builders.TestConfigurationBuilder
import org.jetbrains.kotlin.utils.bind import org.jetbrains.kotlin.utils.bind
abstract class AbstractLLFirReversedBlackBoxCodegenBasedTest : AbstractLLFirBlackBoxCodegenBasedTestBase() { abstract class AbstractLLFirReversedBlackBoxCodegenBasedTest : AbstractLLFirBlackBoxCodegenBasedTestBase() {
override fun TestConfigurationBuilder.configureTest() { override fun configureTest(builder: TestConfigurationBuilder) {
with(builder) {
facadeStep(::LowLevelFirFrontendFacade.bind(LLFirAnalyzerFacadeFactoryWithPreresolveInReversedOrder)) facadeStep(::LowLevelFirFrontendFacade.bind(LLFirAnalyzerFacadeFactoryWithPreresolveInReversedOrder))
baseConfiguration() baseConfiguration()
useAfterAnalysisCheckers(::LLFirOnlyReversedTestSuppressor) useAfterAnalysisCheckers(::LLFirOnlyReversedTestSuppressor)
} }
} }
}