Get rid of lambdas in AbstractForeignAnnotationsTestBase

Also enable the features from the previous two commits
This commit is contained in:
pyos
2021-08-10 12:36:40 +02:00
committed by Mikhail Glukhikh
parent 28c473074c
commit 58110709f3
2 changed files with 91 additions and 82 deletions
@@ -6,51 +6,56 @@
package org.jetbrains.kotlin.test.runners
import org.jetbrains.kotlin.test.builders.TestConfigurationBuilder
import org.jetbrains.kotlin.test.builders.configureFirHandlersStep
import org.jetbrains.kotlin.test.builders.firFrontendStep
import org.jetbrains.kotlin.test.builders.firHandlersStep
import org.jetbrains.kotlin.test.frontend.classic.handlers.FirJspecifyDiagnosticComplianceHandler
import org.jetbrains.kotlin.test.frontend.fir.FirFailingTestSuppressor
import org.jetbrains.kotlin.test.frontend.fir.handlers.*
import org.jetbrains.kotlin.test.model.FrontendKinds
import org.jetbrains.kotlin.test.preprocessors.JspecifyMarksCleanupPreprocessor
import org.jetbrains.kotlin.test.services.fir.FirOldFrontendMetaConfigurator
private val configureFir: TestConfigurationBuilder.() -> Unit = {
globalDefaults {
frontend = FrontendKinds.FIR
}
abstract class AbstractFirForeignAnnotationsTestBase(kind: ForeignAnnotationsTestKind) : AbstractForeignAnnotationsTestBase(kind) {
override fun TestConfigurationBuilder.configureFrontend() {
globalDefaults {
frontend = FrontendKinds.FIR
}
useMetaInfoProcessors(::PsiLightTreeMetaInfoProcessor)
firFrontendStep()
firHandlersStep {
useHandlers(
::FirDiagnosticsHandler,
::FirDumpHandler,
::FirCfgDumpHandler,
::FirCfgConsistencyHandler,
::FirNoImplicitTypesHandler,
)
}
useMetaInfoProcessors(::PsiLightTreeMetaInfoProcessor)
firFrontendStep()
firHandlersStep {
useHandlers(
::FirDiagnosticsHandler,
::FirDumpHandler,
::FirCfgDumpHandler,
::FirCfgConsistencyHandler,
::FirNoImplicitTypesHandler,
)
}
forTestsMatching("compiler/testData/diagnostics/foreignAnnotationsTests/java8Tests/jspecify/*") {
// TODO: port JspecifyDiagnosticComplianceHandler (it doesn't really use the frontend artifact)
useSourcePreprocessor(::JspecifyMarksCleanupPreprocessor)
}
forTestsMatching("compiler/testData/diagnostics/foreignAnnotationsTests/java8Tests/jspecify/*") {
configureFirHandlersStep {
useHandlers(::FirJspecifyDiagnosticComplianceHandler)
}
useSourcePreprocessor(::JspecifyMarksCleanupPreprocessor)
}
forTestsMatching("compiler/testData/diagnostics/*") {
useAfterAnalysisCheckers(
::FirIdenticalChecker,
::FirFailingTestSuppressor,
)
useMetaTestConfigurators(::FirOldFrontendMetaConfigurator)
forTestsMatching("compiler/testData/diagnostics/*") {
useAfterAnalysisCheckers(
::FirIdenticalChecker,
::FirFailingTestSuppressor,
)
useMetaTestConfigurators(::FirOldFrontendMetaConfigurator)
}
}
}
abstract class AbstractFirForeignAnnotationsTestBase : AbstractForeignAnnotationsTestBase(configureFir)
abstract class AbstractFirForeignAnnotationsSourceJavaTest : AbstractFirForeignAnnotationsTestBase()
abstract class AbstractFirForeignAnnotationsSourceJavaTest :
AbstractFirForeignAnnotationsTestBase(ForeignAnnotationsTestKind.SOURCE)
abstract class AbstractFirForeignAnnotationsCompiledJavaTest :
AbstractForeignAnnotationsCompiledJavaTest(configureFir)
AbstractFirForeignAnnotationsTestBase(ForeignAnnotationsTestKind.COMPILED_JAVA)
abstract class AbstractFirForeignAnnotationsCompiledJavaWithPsiClassReadingTest :
AbstractForeignAnnotationsCompiledJavaWithPsiClassReadingTest(configureFir)
AbstractFirForeignAnnotationsTestBase(ForeignAnnotationsTestKind.COMPILED_JAVA_WITH_PSI_CLASS_LOADING)
@@ -21,45 +21,24 @@ import org.jetbrains.kotlin.test.directives.JvmEnvironmentConfigurationDirective
import org.jetbrains.kotlin.test.directives.JvmEnvironmentConfigurationDirectives.USE_PSI_CLASS_FILES_READING
import org.jetbrains.kotlin.test.directives.JvmEnvironmentConfigurationDirectives.WITH_FOREIGN_ANNOTATIONS
import org.jetbrains.kotlin.test.directives.JvmEnvironmentConfigurationDirectives.WITH_JSR305_TEST_ANNOTATIONS
import org.jetbrains.kotlin.test.frontend.classic.ClassicFrontendFacade
import org.jetbrains.kotlin.test.frontend.classic.handlers.*
import org.jetbrains.kotlin.test.model.DependencyKind
import org.jetbrains.kotlin.test.model.FrontendKinds
import org.jetbrains.kotlin.test.preprocessors.JspecifyMarksCleanupPreprocessor
import org.jetbrains.kotlin.test.services.TestServices
import org.jetbrains.kotlin.test.services.configuration.*
import org.jetbrains.kotlin.test.services.jvm.ForeignAnnotationAgainstCompiledJavaTestSuppressor
import org.jetbrains.kotlin.test.services.jvm.PsiClassFilesReadingForCompiledJavaTestSuppressor
import org.jetbrains.kotlin.test.services.sourceProviders.AdditionalDiagnosticsSourceFilesProvider
import org.jetbrains.kotlin.test.services.sourceProviders.CoroutineHelpersSourceFilesProvider
private val configureClassicFrontend: TestConfigurationBuilder.() -> Unit = {
globalDefaults {
frontend = FrontendKinds.ClassicFrontend
}
useMetaInfoProcessors(::OldNewInferenceMetaInfoProcessor)
classicFrontendStep()
classicFrontendHandlersStep {
useHandlers(
::DeclarationsDumpHandler,
::ClassicDiagnosticsHandler,
)
}
forTestsMatching("compiler/testData/diagnostics/foreignAnnotationsTests/java8Tests/jspecify/*") {
configureClassicFrontendHandlersStep {
useHandlers(::JspecifyDiagnosticComplianceHandler)
}
useSourcePreprocessor(::JspecifyMarksCleanupPreprocessor)
}
useAfterAnalysisCheckers(::FirTestDataConsistencyHandler)
enum class ForeignAnnotationsTestKind(val compiledJava: Boolean, val psiClassLoading: Boolean) {
SOURCE(false, false),
COMPILED_JAVA(true, false),
COMPILED_JAVA_WITH_PSI_CLASS_LOADING(true, true)
}
abstract class AbstractForeignAnnotationsTestBase(
private val configureFrontend: TestConfigurationBuilder.() -> Unit = configureClassicFrontend
) : AbstractKotlinCompilerTest() {
abstract class AbstractForeignAnnotationsTestBase(private val kind: ForeignAnnotationsTestKind) : AbstractKotlinCompilerTest() {
override fun TestConfigurationBuilder.configuration() {
globalDefaults {
targetPlatform = JvmPlatforms.defaultJvmPlatform
@@ -69,10 +48,24 @@ abstract class AbstractForeignAnnotationsTestBase(
defaultDirectives {
+REPORT_JVM_DIAGNOSTICS_ON_FRONTEND
+WITH_FOREIGN_ANNOTATIONS
if (kind.compiledJava) {
+ALL_JAVA_AS_BINARY
+SKIP_TXT
}
if (kind.psiClassLoading) {
+USE_PSI_CLASS_FILES_READING
}
}
enableMetaInfoHandler()
if (kind.compiledJava) {
useMetaTestConfigurators(::ForeignAnnotationAgainstCompiledJavaTestSuppressor)
}
if (kind.psiClassLoading) {
useMetaTestConfigurators(::PsiClassFilesReadingForCompiledJavaTestSuppressor)
}
useConfigurators(
::CommonEnvironmentConfigurator,
::JvmForeignAnnotationsConfigurator,
@@ -107,39 +100,50 @@ abstract class AbstractForeignAnnotationsTestBase(
}
}
}
abstract fun TestConfigurationBuilder.configureFrontend()
}
abstract class AbstractForeignAnnotationsSourceJavaTest : AbstractForeignAnnotationsTestBase()
private class FirForeignDiagnosticsTestDataConsistencyHandler(testServices: TestServices) :
FirTestDataConsistencyHandler(testServices) {
abstract class AbstractForeignAnnotationsCompiledJavaTest : AbstractForeignAnnotationsTestBase {
constructor() : super()
constructor(configureFrontend: TestConfigurationBuilder.() -> Unit) : super(configureFrontend)
override fun correspondingFirTest(): AbstractKotlinCompilerTest =
object : AbstractFirForeignAnnotationsSourceJavaTest() {}
}
override fun configure(builder: TestConfigurationBuilder) {
super.configure(builder)
with(builder) {
defaultDirectives {
+ALL_JAVA_AS_BINARY
+SKIP_TXT
}
abstract class AbstractOldFrontendForeignAnnotationsTestBase(kind: ForeignAnnotationsTestKind) :
AbstractForeignAnnotationsTestBase(kind) {
useMetaTestConfigurators(::ForeignAnnotationAgainstCompiledJavaTestSuppressor)
override fun TestConfigurationBuilder.configureFrontend() {
globalDefaults {
frontend = FrontendKinds.ClassicFrontend
}
useMetaInfoProcessors(::OldNewInferenceMetaInfoProcessor)
classicFrontendStep()
classicFrontendHandlersStep {
useHandlers(
::DeclarationsDumpHandler,
::ClassicDiagnosticsHandler,
)
}
forTestsMatching("compiler/testData/diagnostics/foreignAnnotationsTests/java8Tests/jspecify/*") {
configureClassicFrontendHandlersStep {
useHandlers(::JspecifyDiagnosticComplianceHandler)
}
useSourcePreprocessor(::JspecifyMarksCleanupPreprocessor)
}
useAfterAnalysisCheckers(::FirForeignDiagnosticsTestDataConsistencyHandler)
}
}
abstract class AbstractForeignAnnotationsCompiledJavaWithPsiClassReadingTest : AbstractForeignAnnotationsCompiledJavaTest {
constructor() : super()
constructor(configureFrontend: TestConfigurationBuilder.() -> Unit) : super(configureFrontend)
abstract class AbstractForeignAnnotationsSourceJavaTest :
AbstractOldFrontendForeignAnnotationsTestBase(ForeignAnnotationsTestKind.SOURCE)
override fun configure(builder: TestConfigurationBuilder) {
super.configure(builder)
with(builder) {
defaultDirectives {
+USE_PSI_CLASS_FILES_READING
}
abstract class AbstractForeignAnnotationsCompiledJavaTest :
AbstractOldFrontendForeignAnnotationsTestBase(ForeignAnnotationsTestKind.COMPILED_JAVA)
useMetaTestConfigurators(::PsiClassFilesReadingForCompiledJavaTestSuppressor)
}
}
}
abstract class AbstractForeignAnnotationsCompiledJavaWithPsiClassReadingTest :
AbstractOldFrontendForeignAnnotationsTestBase(ForeignAnnotationsTestKind.COMPILED_JAVA_WITH_PSI_CLASS_LOADING)