Get rid of lambdas in AbstractForeignAnnotationsTestBase
Also enable the features from the previous two commits
This commit is contained in:
+35
-30
@@ -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)
|
||||
|
||||
+56
-52
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user