[FIR] Generate PSI and LT versions of all codegen tests

Also change default mode for codegen tests from PSI to LT
This commit is contained in:
Dmitriy Novozhilov
2023-02-17 11:44:51 +02:00
committed by Space Team
parent 5305e987b7
commit a7f62581a2
22 changed files with 66461 additions and 33 deletions
@@ -18,6 +18,7 @@ import org.jetbrains.kotlin.test.builders.configureClassicFrontendHandlersStep
import org.jetbrains.kotlin.test.builders.configureFirHandlersStep
import org.jetbrains.kotlin.test.builders.configureJvmArtifactsHandlersStep
import org.jetbrains.kotlin.test.directives.AsmLikeInstructionListingDirectives.CHECK_ASM_LIKE_INSTRUCTIONS
import org.jetbrains.kotlin.test.directives.FirDiagnosticsDirectives.USE_LIGHT_TREE
import org.jetbrains.kotlin.test.frontend.classic.ClassicFrontend2ClassicBackendConverter
import org.jetbrains.kotlin.test.frontend.classic.ClassicFrontend2IrConverter
import org.jetbrains.kotlin.test.frontend.classic.ClassicFrontendFacade
@@ -99,7 +100,7 @@ open class AbstractIrAsmLikeInstructionListingTest :
get() = ::JvmIrBackendFacade
}
open class AbstractFirAsmLikeInstructionListingTest :
abstract class AbstractFirAsmLikeInstructionListingTestBase(val useLightTree: Boolean) :
AbstractAsmLikeInstructionListingTestBase<FirOutputArtifact, IrBackendInput>(
FrontendKinds.FIR,
TargetBackend.JVM_IR
@@ -113,5 +114,15 @@ open class AbstractFirAsmLikeInstructionListingTest :
override val backendFacade: Constructor<BackendFacade<IrBackendInput, BinaryArtifacts.Jvm>>
get() = ::JvmIrBackendFacade
override fun configure(builder: TestConfigurationBuilder) {
super.configure(builder)
if (useLightTree) {
builder.defaultDirectives { +USE_LIGHT_TREE }
}
}
}
open class AbstractFirAsmLikeInstructionListingTest : AbstractFirAsmLikeInstructionListingTestBase(useLightTree = true)
@@ -6,7 +6,6 @@
package org.jetbrains.kotlin.test.runners.codegen
import org.jetbrains.kotlin.test.builders.TestConfigurationBuilder
import org.jetbrains.kotlin.test.directives.FirDiagnosticsDirectives
open class AbstractBlackBoxInlineCodegenTest : AbstractBlackBoxCodegenTest() {
override fun configure(builder: TestConfigurationBuilder) {
@@ -29,14 +28,12 @@ open class AbstractFirBlackBoxInlineCodegenTest : AbstractFirBlackBoxCodegenTest
}
}
open class AbstractFirLightTreeBlackBoxInlineCodegenTest : AbstractFirBlackBoxCodegenTest() {
@FirPsiCodegenTest
open class AbstractFirPsiBlackBoxInlineCodegenTest : AbstractFirPsiBlackBoxCodegenTest() {
override fun configure(builder: TestConfigurationBuilder) {
super.configure(builder)
with(builder) {
useInlineHandlers()
defaultDirectives {
+FirDiagnosticsDirectives.USE_LIGHT_TREE
}
}
}
}
@@ -16,6 +16,7 @@ import org.jetbrains.kotlin.test.backend.ir.JvmIrBackendFacade
import org.jetbrains.kotlin.test.builders.TestConfigurationBuilder
import org.jetbrains.kotlin.test.builders.configureJvmArtifactsHandlersStep
import org.jetbrains.kotlin.test.directives.CodegenTestDirectives
import org.jetbrains.kotlin.test.directives.FirDiagnosticsDirectives
import org.jetbrains.kotlin.test.directives.LanguageSettingsDirectives
import org.jetbrains.kotlin.test.runners.AbstractKotlinCompilerWithTargetBackendTest
import org.jetbrains.kotlin.test.frontend.classic.*
@@ -80,9 +81,11 @@ open class AbstractIrBytecodeListingTest : AbstractBytecodeListingTestBase<Class
get() = ::JvmIrBackendFacade
}
open class AbstractFirBytecodeListingTest : AbstractBytecodeListingTestBase<FirOutputArtifact, IrBackendInput>(
TargetBackend.JVM_IR, FrontendKinds.FIR
) {
abstract class AbstractFirBytecodeListingTestBase(val useLightTree: Boolean) :
AbstractBytecodeListingTestBase<FirOutputArtifact, IrBackendInput>(
TargetBackend.JVM_IR,
FrontendKinds.FIR
) {
override val frontendFacade: Constructor<FrontendFacade<FirOutputArtifact>>
get() = ::FirFrontendFacade
@@ -91,4 +94,16 @@ open class AbstractFirBytecodeListingTest : AbstractBytecodeListingTestBase<FirO
override val backendFacade: Constructor<BackendFacade<IrBackendInput, BinaryArtifacts.Jvm>>
get() = ::JvmIrBackendFacade
override fun configure(builder: TestConfigurationBuilder) {
super.configure(builder)
if (useLightTree) {
builder.defaultDirectives { +FirDiagnosticsDirectives.USE_LIGHT_TREE }
}
}
}
open class AbstractFirBytecodeListingTest : AbstractFirBytecodeListingTestBase(useLightTree = true)
@FirPsiCodegenTest
open class AbstractFirPsiBytecodeListingTest : AbstractFirBytecodeListingTestBase(useLightTree = false)
@@ -18,6 +18,7 @@ import org.jetbrains.kotlin.test.builders.configureJvmArtifactsHandlersStep
import org.jetbrains.kotlin.test.directives.JvmEnvironmentConfigurationDirectives.USE_PSI_CLASS_FILES_READING
import org.jetbrains.kotlin.test.directives.JvmEnvironmentConfigurationDirectives.WITH_REFLECT
import org.jetbrains.kotlin.test.directives.ConfigurationDirectives.WITH_STDLIB
import org.jetbrains.kotlin.test.directives.FirDiagnosticsDirectives
import org.jetbrains.kotlin.test.frontend.classic.ClassicFrontend2ClassicBackendConverter
import org.jetbrains.kotlin.test.frontend.classic.ClassicFrontend2IrConverter
import org.jetbrains.kotlin.test.frontend.classic.ClassicFrontendFacade
@@ -82,7 +83,7 @@ open class AbstractIrBytecodeTextTest : AbstractBytecodeTextTestBase<ClassicFron
get() = ::JvmIrBackendFacade
}
open class AbstractFirBytecodeTextTest : AbstractBytecodeTextTestBase<FirOutputArtifact, IrBackendInput>(
open class AbstractFirBytecodeTextTestBase(val useLightTree: Boolean) : AbstractBytecodeTextTestBase<FirOutputArtifact, IrBackendInput>(
targetBackend = TargetBackend.JVM_IR,
targetFrontend = FrontendKinds.FIR
) {
@@ -101,7 +102,15 @@ open class AbstractFirBytecodeTextTest : AbstractBytecodeTextTestBase<FirOutputA
defaultDirectives {
// See KT-44152
-USE_PSI_CLASS_FILES_READING
if (useLightTree) {
+FirDiagnosticsDirectives.USE_LIGHT_TREE
}
}
}
}
}
open class AbstractFirBytecodeTextTest : AbstractFirBytecodeTextTestBase(useLightTree = true)
@FirPsiCodegenTest
open class AbstractFirPsiBytecodeTextTest : AbstractFirBytecodeTextTestBase(useLightTree = false)
@@ -20,6 +20,7 @@ import org.jetbrains.kotlin.test.builders.TestConfigurationBuilder
import org.jetbrains.kotlin.test.builders.configureIrHandlersStep
import org.jetbrains.kotlin.test.directives.CodegenTestDirectives.IGNORE_BACKEND_K2_MULTI_MODULE
import org.jetbrains.kotlin.test.directives.CodegenTestDirectives.IGNORE_BACKEND_MULTI_MODULE
import org.jetbrains.kotlin.test.directives.FirDiagnosticsDirectives
import org.jetbrains.kotlin.test.directives.JvmEnvironmentConfigurationDirectives.SERIALIZE_IR
import org.jetbrains.kotlin.test.directives.model.ValueDirective
import org.jetbrains.kotlin.test.frontend.classic.ClassicFrontend2ClassicBackendConverter
@@ -102,7 +103,7 @@ open class AbstractIrSerializeCompileKotlinAgainstInlineKotlinTest : AbstractIrC
}
}
open class AbstractFirSerializeCompileKotlinAgainstInlineKotlinTest :
open class AbstractFirSerializeCompileKotlinAgainstInlineKotlinTestBase(val useLightTree: Boolean) :
AbstractCompileKotlinAgainstInlineKotlinTestBase<FirOutputArtifact, IrBackendInput>(FrontendKinds.FIR, TargetBackend.JVM_IR_SERIALIZE) {
override val frontendFacade: Constructor<FrontendFacade<FirOutputArtifact>>
@@ -119,5 +120,15 @@ open class AbstractFirSerializeCompileKotlinAgainstInlineKotlinTest :
override fun configure(builder: TestConfigurationBuilder) {
super.configure(builder)
builder.configureForSerialization()
if (useLightTree) {
builder.defaultDirectives { +FirDiagnosticsDirectives.USE_LIGHT_TREE }
}
}
}
open class AbstractFirSerializeCompileKotlinAgainstInlineKotlinTest :
AbstractFirSerializeCompileKotlinAgainstInlineKotlinTestBase(useLightTree = true)
@FirPsiCodegenTest
open class AbstractFirPsiSerializeCompileKotlinAgainstInlineKotlinTest :
AbstractFirSerializeCompileKotlinAgainstInlineKotlinTestBase(useLightTree = false)
@@ -13,6 +13,7 @@ import org.jetbrains.kotlin.test.builders.TestConfigurationBuilder
import org.jetbrains.kotlin.test.builders.configureFirHandlersStep
import org.jetbrains.kotlin.test.directives.JvmEnvironmentConfigurationDirectives.USE_PSI_CLASS_FILES_READING
import org.jetbrains.kotlin.test.directives.ConfigurationDirectives.WITH_STDLIB
import org.jetbrains.kotlin.test.directives.FirDiagnosticsDirectives.USE_LIGHT_TREE
import org.jetbrains.kotlin.test.directives.LanguageSettingsDirectives
import org.jetbrains.kotlin.test.frontend.fir.Fir2IrResultsConverter
import org.jetbrains.kotlin.test.frontend.fir.FirFrontendFacade
@@ -24,7 +25,9 @@ import org.jetbrains.kotlin.test.frontend.fir.handlers.FirResolvedTypesVerifier
import org.jetbrains.kotlin.test.frontend.fir.handlers.FirScopeDumpHandler
import org.jetbrains.kotlin.test.model.*
open class AbstractFirBlackBoxCodegenTest : AbstractJvmBlackBoxCodegenTestBase<FirOutputArtifact, IrBackendInput>(
abstract class AbstractFirBlackBoxCodegenTestBase(
val useLightTree: Boolean
) : AbstractJvmBlackBoxCodegenTestBase<FirOutputArtifact, IrBackendInput>(
FrontendKinds.FIR,
TargetBackend.JVM_IR
) {
@@ -43,6 +46,9 @@ open class AbstractFirBlackBoxCodegenTest : AbstractJvmBlackBoxCodegenTestBase<F
defaultDirectives {
// See KT-44152
-USE_PSI_CLASS_FILES_READING
if (useLightTree) {
+USE_LIGHT_TREE
}
}
forTestsMatching("*WithStdLib/*") {
@@ -77,3 +83,8 @@ open class AbstractFirBlackBoxCodegenTest : AbstractJvmBlackBoxCodegenTestBase<F
}
}
}
open class AbstractFirBlackBoxCodegenTest : AbstractFirBlackBoxCodegenTestBase(useLightTree = true)
@FirPsiCodegenTest
open class AbstractFirPsiBlackBoxCodegenTest : AbstractFirBlackBoxCodegenTestBase(useLightTree = false)
@@ -12,6 +12,7 @@ import org.jetbrains.kotlin.test.backend.classic.ClassicJvmBackendFacade
import org.jetbrains.kotlin.test.backend.ir.IrBackendInput
import org.jetbrains.kotlin.test.backend.ir.JvmIrBackendFacade
import org.jetbrains.kotlin.test.builders.TestConfigurationBuilder
import org.jetbrains.kotlin.test.directives.FirDiagnosticsDirectives
import org.jetbrains.kotlin.test.frontend.classic.ClassicFrontend2ClassicBackendConverter
import org.jetbrains.kotlin.test.frontend.classic.ClassicFrontend2IrConverter
import org.jetbrains.kotlin.test.frontend.classic.ClassicFrontendFacade
@@ -60,7 +61,7 @@ open class AbstractLocalVariableTest : AbstractLocalVariableTestBase<ClassicFron
}
}
open class AbstractFirLocalVariableTest : AbstractLocalVariableTestBase<FirOutputArtifact, IrBackendInput>(
open class AbstractFirLocalVariableTestBase(val useLightTree: Boolean) : AbstractLocalVariableTestBase<FirOutputArtifact, IrBackendInput>(
FrontendKinds.FIR,
TargetBackend.JVM_IR
) {
@@ -76,5 +77,13 @@ open class AbstractFirLocalVariableTest : AbstractLocalVariableTestBase<FirOutpu
override fun configure(builder: TestConfigurationBuilder) {
super.configure(builder)
builder.configureDumpHandlersForCodegenTest()
if (useLightTree) {
builder.defaultDirectives { +FirDiagnosticsDirectives.USE_LIGHT_TREE }
}
}
}
open class AbstractFirLocalVariableTest : AbstractFirLocalVariableTestBase(useLightTree = true)
@FirPsiCodegenTest
open class AbstractFirPsiLocalVariableTest : AbstractFirLocalVariableTestBase(useLightTree = false)
@@ -12,6 +12,7 @@ import org.jetbrains.kotlin.test.backend.classic.ClassicJvmBackendFacade
import org.jetbrains.kotlin.test.backend.ir.IrBackendInput
import org.jetbrains.kotlin.test.backend.ir.JvmIrBackendFacade
import org.jetbrains.kotlin.test.builders.TestConfigurationBuilder
import org.jetbrains.kotlin.test.directives.FirDiagnosticsDirectives
import org.jetbrains.kotlin.test.frontend.classic.ClassicFrontend2ClassicBackendConverter
import org.jetbrains.kotlin.test.frontend.classic.ClassicFrontend2IrConverter
import org.jetbrains.kotlin.test.frontend.classic.ClassicFrontendFacade
@@ -60,7 +61,7 @@ open class AbstractSteppingTest : AbstractSteppingTestBase<ClassicFrontendOutput
}
}
open class AbstractFirSteppingTest : AbstractSteppingTestBase<FirOutputArtifact, IrBackendInput>(
open class AbstractFirSteppingTestBase(val useLightTree: Boolean) : AbstractSteppingTestBase<FirOutputArtifact, IrBackendInput>(
FrontendKinds.FIR,
TargetBackend.JVM_IR
) {
@@ -76,5 +77,13 @@ open class AbstractFirSteppingTest : AbstractSteppingTestBase<FirOutputArtifact,
override fun configure(builder: TestConfigurationBuilder) {
super.configure(builder)
builder.configureDumpHandlersForCodegenTest()
if (useLightTree) {
builder.defaultDirectives { +FirDiagnosticsDirectives.USE_LIGHT_TREE }
}
}
}
open class AbstractFirSteppingTest : AbstractFirSteppingTestBase(useLightTree = true)
@FirPsiCodegenTest
open class AbstractFirPsiSteppingTest : AbstractFirSteppingTestBase(useLightTree = false)
@@ -0,0 +1,17 @@
/*
* Copyright 2010-2023 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.
*/
package org.jetbrains.kotlin.test.runners.codegen
import org.junit.jupiter.api.Tag
/**
* Default mode for FIR compiler uses light tree, so all regular tests should specify it
* To ensure that PSI mode works as well each codegen test should have PSI counterpart
* with this annotation.
* Annotation excludes test class from regular aggregate test suite and adds it to nightly build
*/
@Tag("FirPsiCodegenTest")
annotation class FirPsiCodegenTest
@@ -28,6 +28,7 @@ import org.jetbrains.kotlin.test.frontend.fir.FirFrontendFacade
import org.jetbrains.kotlin.test.frontend.fir.FirOutputArtifact
import org.jetbrains.kotlin.test.model.*
import org.jetbrains.kotlin.test.runners.AbstractKotlinCompilerWithTargetBackendTest
import org.jetbrains.kotlin.test.runners.codegen.FirPsiCodegenTest
import org.jetbrains.kotlin.test.services.JsLibraryProvider
import org.jetbrains.kotlin.test.services.configuration.CommonEnvironmentConfigurator
import org.jetbrains.kotlin.test.services.configuration.JsEnvironmentConfigurator
@@ -115,7 +116,7 @@ open class AbstractIrTextTest : AbstractIrTextTestBase<ClassicFrontendOutputArti
}
}
open class AbstractFir2IrTextTest : AbstractIrTextTestBase<FirOutputArtifact>() {
open class AbstractFir2IrTextTestBase(val useLightTree: Boolean) : AbstractIrTextTestBase<FirOutputArtifact>() {
override val frontend: FrontendKind<*>
get() = FrontendKinds.FIR
override val frontendFacade: Constructor<FrontendFacade<FirOutputArtifact>>
@@ -126,6 +127,12 @@ open class AbstractFir2IrTextTest : AbstractIrTextTestBase<FirOutputArtifact>()
override fun configure(builder: TestConfigurationBuilder) {
super.configure(builder)
with(builder) {
if (useLightTree) {
defaultDirectives {
+FirDiagnosticsDirectives.USE_LIGHT_TREE
}
}
useAfterAnalysisCheckers(
::FirIrDumpIdenticalChecker,
::BlackBoxCodegenSuppressor
@@ -140,18 +147,12 @@ open class AbstractFir2IrTextTest : AbstractIrTextTestBase<FirOutputArtifact>()
}
}
open class AbstractLightTreeFir2IrTextTest : AbstractFir2IrTextTest() {
override fun configure(builder: TestConfigurationBuilder) {
super.configure(builder)
with (builder) {
defaultDirectives {
+FirDiagnosticsDirectives.USE_LIGHT_TREE
}
}
}
}
open class AbstractFir2IrTextTest : AbstractFir2IrTextTestBase(useLightTree = true)
open class AbstractFir2IrJsTextTest : AbstractFir2IrTextTest() {
@FirPsiCodegenTest
open class AbstractFirPsi2IrTextTest : AbstractFir2IrTextTestBase(useLightTree = false)
open class AbstractFir2IrJsTextTestBase(useLightTree: Boolean) : AbstractFir2IrTextTestBase(useLightTree) {
override fun TestConfigurationBuilder.applyConfigurators() {
useConfigurators(
::CommonEnvironmentConfigurator,
@@ -173,3 +174,5 @@ open class AbstractFir2IrJsTextTest : AbstractFir2IrTextTest() {
}
}
}
open class AbstractFir2IrJsTextTest : AbstractFir2IrJsTextTestBase(useLightTree = true)