Introduce IGNORE_BACKEND_FIR_MULTI_MODULE directive

This commit is contained in:
Georgy Bronnikov
2022-02-18 18:49:35 +03:00
committed by Alexander Udalov
parent 571ba9298e
commit 5605463ecf
25 changed files with 58 additions and 29 deletions
@@ -4,6 +4,7 @@
// IGNORE_BACKEND: JVM, JVM_IR // IGNORE_BACKEND: JVM, JVM_IR
// IGNORE_BACKEND_FIR: JVM_IR // IGNORE_BACKEND_FIR: JVM_IR
// IGNORE_BACKEND_MULTI_MODULE: JVM, JVM_IR, JVM_MULTI_MODULE_OLD_AGAINST_IR, JVM_MULTI_MODULE_IR_AGAINST_OLD // IGNORE_BACKEND_MULTI_MODULE: JVM, JVM_IR, JVM_MULTI_MODULE_OLD_AGAINST_IR, JVM_MULTI_MODULE_IR_AGAINST_OLD
// IGNORE_BACKEND_FIR_MULTI_MODULE: JVM_IR
// FILE: 1.kt // FILE: 1.kt
interface Flow<T> { interface Flow<T> {
@@ -1,5 +1,6 @@
// FULL_JDK // FULL_JDK
// IGNORE_BACKEND_FIR: JVM_IR // IGNORE_BACKEND_FIR: JVM_IR
// IGNORE_BACKEND_FIR_MULTI_MODULE: JVM_IR
// TARGET_BACKEND: JVM // TARGET_BACKEND: JVM
// FILE: 1.kt // FILE: 1.kt
@@ -1,5 +1,6 @@
// FULL_JDK // FULL_JDK
// IGNORE_BACKEND_FIR: JVM_IR // IGNORE_BACKEND_FIR: JVM_IR
// IGNORE_BACKEND_FIR_MULTI_MODULE: JVM_IR
// TARGET_BACKEND: JVM // TARGET_BACKEND: JVM
// FILE: 1.kt // FILE: 1.kt
@@ -1,5 +1,6 @@
// FULL_JDK // FULL_JDK
// IGNORE_BACKEND_FIR: JVM_IR // IGNORE_BACKEND_FIR: JVM_IR
// IGNORE_BACKEND_FIR_MULTI_MODULE: JVM_IR
// TARGET_BACKEND: JVM // TARGET_BACKEND: JVM
// FILE: 1.kt // FILE: 1.kt
@@ -1,6 +1,7 @@
// FULL_JDK // FULL_JDK
// NO_CHECK_LAMBDA_INLINING // NO_CHECK_LAMBDA_INLINING
// IGNORE_BACKEND_FIR: JVM_IR // IGNORE_BACKEND_FIR: JVM_IR
// IGNORE_BACKEND_FIR_MULTI_MODULE: JVM_IR
// TARGET_BACKEND: JVM // TARGET_BACKEND: JVM
// FILE: 1.kt // FILE: 1.kt
@@ -1,6 +1,7 @@
// IGNORE_BACKEND: JVM, JVM_IR // IGNORE_BACKEND: JVM, JVM_IR
// IGNORE_BACKEND_FIR: JVM_IR // IGNORE_BACKEND_FIR: JVM_IR
// IGNORE_BACKEND_MULTI_MODULE: JVM, JVM_IR, JVM_MULTI_MODULE_OLD_AGAINST_IR, JVM_MULTI_MODULE_IR_AGAINST_OLD // IGNORE_BACKEND_MULTI_MODULE: JVM, JVM_IR, JVM_MULTI_MODULE_OLD_AGAINST_IR, JVM_MULTI_MODULE_IR_AGAINST_OLD
// IGNORE_BACKEND_FIR_MULTI_MODULE: JVM_IR
// FILE: 1.kt // FILE: 1.kt
package test package test
@@ -2,6 +2,7 @@
// !LANGUAGE: -UseCorrectExecutionOrderForVarargArguments // !LANGUAGE: -UseCorrectExecutionOrderForVarargArguments
// IGNORE_BACKEND: JS // IGNORE_BACKEND: JS
// IGNORE_BACKEND_FIR: JVM_IR // IGNORE_BACKEND_FIR: JVM_IR
// IGNORE_BACKEND_FIR_MULTI_MODULE: JVM_IR
// NO_CHECK_LAMBDA_INLINING // NO_CHECK_LAMBDA_INLINING
// KJS_WITH_FULL_RUNTIME // KJS_WITH_FULL_RUNTIME
// FILE: 1.kt // FILE: 1.kt
@@ -7,6 +7,7 @@
// IGNORE_BACKEND: JS_IR_ES6 // IGNORE_BACKEND: JS_IR_ES6
// IGNORE_BACKEND_MULTI_MODULE: JVM_IR, JVM_MULTI_MODULE_IR_AGAINST_OLD // IGNORE_BACKEND_MULTI_MODULE: JVM_IR, JVM_MULTI_MODULE_IR_AGAINST_OLD
// IGNORE_BACKEND_FIR: JVM_IR // IGNORE_BACKEND_FIR: JVM_IR
// IGNORE_BACKEND_FIR_MULTI_MODULE: JVM_IR
// NO_CHECK_LAMBDA_INLINING // NO_CHECK_LAMBDA_INLINING
// KJS_WITH_FULL_RUNTIME // KJS_WITH_FULL_RUNTIME
// FILE: 1.kt // FILE: 1.kt
@@ -1,6 +1,7 @@
// !LANGUAGE: +MultiPlatformProjects // !LANGUAGE: +MultiPlatformProjects
// IGNORE_BACKEND: WASM // IGNORE_BACKEND: WASM
// IGNORE_BACKEND_FIR: JVM_IR // IGNORE_BACKEND_FIR: JVM_IR
// IGNORE_BACKEND_FIR_MULTI_MODULE: JVM_IR
// NO_CHECK_LAMBDA_INLINING // NO_CHECK_LAMBDA_INLINING
// TODO: replace all references on expected declarations and their members to actuals, // TODO: replace all references on expected declarations and their members to actuals,
// otherwise DCE keeps members of expect D referenced from lambdas in default arguments instead of members of actual D // otherwise DCE keeps members of expect D referenced from lambdas in default arguments instead of members of actual D
@@ -1,6 +1,7 @@
// IGNORE_BACKEND: JVM // IGNORE_BACKEND: JVM
// IGNORE_BACKEND_MULTI_MODULE: JVM, JVM_MULTI_MODULE_OLD_AGAINST_IR // IGNORE_BACKEND_MULTI_MODULE: JVM, JVM_MULTI_MODULE_OLD_AGAINST_IR
// IGNORE_BACKEND_FIR: JVM_IR // IGNORE_BACKEND_FIR: JVM_IR
// IGNORE_BACKEND_FIR_MULTI_MODULE: JVM_IR
// NO_CHECK_LAMBDA_INLINING // NO_CHECK_LAMBDA_INLINING
// FILE: 1.kt // FILE: 1.kt
@@ -1,4 +1,5 @@
// IGNORE_BACKEND_FIR: JVM_IR // IGNORE_BACKEND_FIR: JVM_IR
// IGNORE_BACKEND_FIR_MULTI_MODULE: JVM_IR
// FILE: 1.kt // FILE: 1.kt
package test package test
@@ -1,4 +1,5 @@
// IGNORE_BACKEND_FIR: JVM_IR // IGNORE_BACKEND_FIR: JVM_IR
// IGNORE_BACKEND_FIR_MULTI_MODULE: JVM_IR
// FILE: 1.kt // FILE: 1.kt
package test package test
@@ -2,6 +2,7 @@
// NO_CHECK_LAMBDA_INLINING // NO_CHECK_LAMBDA_INLINING
// IGNORE_BACKEND: JVM_IR // IGNORE_BACKEND: JVM_IR
// IGNORE_BACKEND_FIR: JVM_IR // IGNORE_BACKEND_FIR: JVM_IR
// IGNORE_BACKEND_FIR_MULTI_MODULE: JVM_IR
// FILE: 1.kt // FILE: 1.kt
package builders package builders
inline fun call(crossinline init: () -> Unit) { inline fun call(crossinline init: () -> Unit) {
@@ -11,20 +11,20 @@ _2Kt
+ 2 1.kt + 2 1.kt
builders/_1Kt builders/_1Kt
*L *L
1#1,32:1 1#1,33:1
17#1,3:34 18#1,3:35
20#1,6:38 21#1,6:39
8#2:33 9#2:34
8#2:37 9#2:38
*S KotlinDebug *S KotlinDebug
*F *F
+ 1 2.kt + 1 2.kt
_2Kt _2Kt
*L *L
30#1:34,3 31#1:35,3
30#1:38,6 31#1:39,6
19#1:33 20#1:34
30#1:37 31#1:38
*E *E
SMAP SMAP
@@ -35,7 +35,7 @@ Kotlin
+ 1 2.kt + 1 2.kt
_2Kt$test$1$1 _2Kt$test$1$1
*L *L
1#1,32:1 1#1,33:1
*E *E
SMAP SMAP
@@ -46,6 +46,6 @@ Kotlin
+ 1 2.kt + 1 2.kt
_2Kt$test$1$1 _2Kt$test$1$1
*L *L
1#1,32:1 1#1,33:1
*E *E
@@ -1,6 +1,7 @@
// IGNORE_BACKEND_MULTI_MODULE: JVM_IR, JVM_MULTI_MODULE_IR_AGAINST_OLD // IGNORE_BACKEND_MULTI_MODULE: JVM_IR, JVM_MULTI_MODULE_IR_AGAINST_OLD
// IGNORE_BACKEND: JVM_IR // IGNORE_BACKEND: JVM_IR
// IGNORE_BACKEND_FIR: JVM_IR // IGNORE_BACKEND_FIR: JVM_IR
// IGNORE_BACKEND_FIR_MULTI_MODULE: JVM_IR
// NO_CHECK_LAMBDA_INLINING // NO_CHECK_LAMBDA_INLINING
// FILE: 1.kt // FILE: 1.kt
package builders package builders
@@ -11,20 +11,20 @@ _2Kt
+ 2 1.kt + 2 1.kt
builders/_1Kt builders/_1Kt
*L *L
1#1,34:1 1#1,35:1
17#1,3:36 18#1,3:37
20#1,8:40 21#1,8:41
8#2:35 9#2:36
8#2:39 9#2:40
*S KotlinDebug *S KotlinDebug
*F *F
+ 1 2.kt + 1 2.kt
_2Kt _2Kt
*L *L
32#1:36,3 33#1:37,3
32#1:40,8 33#1:41,8
19#1:35 20#1:36
32#1:39 33#1:40
*E *E
SMAP SMAP
@@ -35,7 +35,7 @@ Kotlin
+ 1 2.kt + 1 2.kt
_2Kt$test$1$1 _2Kt$test$1$1
*L *L
1#1,34:1 1#1,35:1
*E *E
SMAP SMAP
@@ -46,6 +46,6 @@ Kotlin
+ 1 2.kt + 1 2.kt
_2Kt$test$1$1 _2Kt$test$1$1
*L *L
1#1,34:1 1#1,35:1
*E *E
@@ -1,6 +1,7 @@
// IGNORE // IGNORE
// NO_CHECK_LAMBDA_INLINING // NO_CHECK_LAMBDA_INLINING
// IGNORE_BACKEND_MULTI_MODULE: JVM, JVM_IR, JVM_MULTI_MODULE_OLD_AGAINST_IR, JVM_MULTI_MODULE_IR_AGAINST_OLD // IGNORE_BACKEND_MULTI_MODULE: JVM, JVM_IR, JVM_MULTI_MODULE_OLD_AGAINST_IR, JVM_MULTI_MODULE_IR_AGAINST_OLD
// IGNORE_BACKEND_FIR_MULTI_MODULE: JVM_IR
// FILE: 1.kt // FILE: 1.kt
// NO_SMAP_DUMP // NO_SMAP_DUMP
@@ -9,15 +9,15 @@ _2Kt
+ 2 1.kt + 2 1.kt
builders/_1Kt builders/_1Kt
*L *L
1#1,35:1 1#1,36:1
14#2,3:36 15#2,3:37
10#2,15:39 11#2,15:40
*S KotlinDebug *S KotlinDebug
*F *F
+ 1 2.kt + 1 2.kt
_2Kt _2Kt
*L *L
33#1:36,3 34#1:37,3
33#1:39,15 34#1:40,15
*E *E
@@ -4,6 +4,7 @@
// IGNORE_BACKEND: JVM, JVM_IR // IGNORE_BACKEND: JVM, JVM_IR
// IGNORE_BACKEND_FIR: JVM_IR // IGNORE_BACKEND_FIR: JVM_IR
// IGNORE_BACKEND_MULTI_MODULE: JVM, JVM_IR, JVM_MULTI_MODULE_OLD_AGAINST_IR, JVM_MULTI_MODULE_IR_AGAINST_OLD // IGNORE_BACKEND_MULTI_MODULE: JVM, JVM_IR, JVM_MULTI_MODULE_OLD_AGAINST_IR, JVM_MULTI_MODULE_IR_AGAINST_OLD
// IGNORE_BACKEND_FIR_MULTI_MODULE: JVM_IR
// FILE: 1.kt // FILE: 1.kt
package test package test
@@ -1,4 +1,5 @@
// IGNORE_BACKEND_FIR: JVM_IR // IGNORE_BACKEND_FIR: JVM_IR
// IGNORE_BACKEND_FIR_MULTI_MODULE: JVM_IR
// !LANGUAGE: -ProhibitSuperCallsFromPublicInline // !LANGUAGE: -ProhibitSuperCallsFromPublicInline
// FILE: 1.kt // FILE: 1.kt
@@ -1,4 +1,5 @@
// IGNORE_BACKEND_FIR: JVM_IR // IGNORE_BACKEND_FIR: JVM_IR
// IGNORE_BACKEND_FIR_MULTI_MODULE: JVM_IR
// !LANGUAGE: -ProhibitSuperCallsFromPublicInline // !LANGUAGE: -ProhibitSuperCallsFromPublicInline
// FILE: 1.kt // FILE: 1.kt
@@ -1,4 +1,5 @@
// IGNORE_BACKEND_FIR: JVM_IR // IGNORE_BACKEND_FIR: JVM_IR
// IGNORE_BACKEND_FIR_MULTI_MODULE: JVM_IR
// !LANGUAGE: -ProhibitSuperCallsFromPublicInline // !LANGUAGE: -ProhibitSuperCallsFromPublicInline
// FILE: 1.kt // FILE: 1.kt
@@ -61,7 +61,7 @@ class BlackBoxCodegenSuppressor(
fun extractIgnoreDirective(module: TestModule): ValueDirective<TargetBackend>? { fun extractIgnoreDirective(module: TestModule): ValueDirective<TargetBackend>? {
return when (module.frontendKind) { return when (module.frontendKind) {
FrontendKinds.ClassicFrontend -> customIgnoreDirective ?: IGNORE_BACKEND FrontendKinds.ClassicFrontend -> customIgnoreDirective ?: IGNORE_BACKEND
FrontendKinds.FIR -> IGNORE_BACKEND_FIR FrontendKinds.FIR -> customIgnoreDirective ?: IGNORE_BACKEND_FIR
else -> null else -> null
} }
} }
@@ -29,6 +29,11 @@ object CodegenTestDirectives : SimpleDirectivesContainer() {
applicability = Global applicability = Global
) )
val IGNORE_BACKEND_FIR_MULTI_MODULE by enumDirective<TargetBackend>(
description = "Ignore failures of multimodule test on target backend if test uses FIR",
applicability = Global
)
val USE_JAVAC_BASED_ON_JVM_TARGET by directive( val USE_JAVAC_BASED_ON_JVM_TARGET by directive(
description = """ description = """
Determine version of javac for compilation of java files based Determine version of javac for compilation of java files based
@@ -18,8 +18,10 @@ import org.jetbrains.kotlin.test.backend.ir.JvmIrBackendFacade
import org.jetbrains.kotlin.test.bind import org.jetbrains.kotlin.test.bind
import org.jetbrains.kotlin.test.builders.TestConfigurationBuilder import org.jetbrains.kotlin.test.builders.TestConfigurationBuilder
import org.jetbrains.kotlin.test.builders.configureIrHandlersStep import org.jetbrains.kotlin.test.builders.configureIrHandlersStep
import org.jetbrains.kotlin.test.directives.CodegenTestDirectives.IGNORE_BACKEND_FIR_MULTI_MODULE
import org.jetbrains.kotlin.test.directives.CodegenTestDirectives.IGNORE_BACKEND_MULTI_MODULE import org.jetbrains.kotlin.test.directives.CodegenTestDirectives.IGNORE_BACKEND_MULTI_MODULE
import org.jetbrains.kotlin.test.directives.JvmEnvironmentConfigurationDirectives.SERIALIZE_IR 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 import org.jetbrains.kotlin.test.frontend.classic.ClassicFrontend2ClassicBackendConverter
import org.jetbrains.kotlin.test.frontend.classic.ClassicFrontend2IrConverter import org.jetbrains.kotlin.test.frontend.classic.ClassicFrontend2IrConverter
import org.jetbrains.kotlin.test.frontend.classic.ClassicFrontendFacade import org.jetbrains.kotlin.test.frontend.classic.ClassicFrontendFacade
@@ -40,6 +42,7 @@ abstract class AbstractCompileKotlinAgainstInlineKotlinTestBase<R : ResultingArt
abstract val frontendFacade: Constructor<FrontendFacade<R>> abstract val frontendFacade: Constructor<FrontendFacade<R>>
abstract val frontendToBackendConverter: Constructor<Frontend2BackendConverter<R, I>> abstract val frontendToBackendConverter: Constructor<Frontend2BackendConverter<R, I>>
abstract val backendFacade: Constructor<BackendFacade<I, BinaryArtifacts.Jvm>> abstract val backendFacade: Constructor<BackendFacade<I, BinaryArtifacts.Jvm>>
open val directiveToSuppressTest: ValueDirective<TargetBackend> = IGNORE_BACKEND_MULTI_MODULE
override fun TestConfigurationBuilder.configuration() { override fun TestConfigurationBuilder.configuration() {
commonConfigurationForCodegenTest(targetFrontend, frontendFacade, frontendToBackendConverter, backendFacade) commonConfigurationForCodegenTest(targetFrontend, frontendFacade, frontendToBackendConverter, backendFacade)
@@ -48,7 +51,7 @@ abstract class AbstractCompileKotlinAgainstInlineKotlinTestBase<R : ResultingArt
useModuleStructureTransformers( useModuleStructureTransformers(
SplittingModuleTransformerForBoxTests() SplittingModuleTransformerForBoxTests()
) )
useAfterAnalysisCheckers(::BlackBoxCodegenSuppressor.bind(IGNORE_BACKEND_MULTI_MODULE)) useAfterAnalysisCheckers(::BlackBoxCodegenSuppressor.bind(directiveToSuppressTest))
} }
} }
@@ -111,6 +114,8 @@ open class AbstractFirSerializeCompileKotlinAgainstInlineKotlinTest :
override val backendFacade: Constructor<BackendFacade<IrBackendInput, BinaryArtifacts.Jvm>> override val backendFacade: Constructor<BackendFacade<IrBackendInput, BinaryArtifacts.Jvm>>
get() = ::JvmIrBackendFacade get() = ::JvmIrBackendFacade
override val directiveToSuppressTest = IGNORE_BACKEND_FIR_MULTI_MODULE
override fun configure(builder: TestConfigurationBuilder) { override fun configure(builder: TestConfigurationBuilder) {
super.configure(builder) super.configure(builder)
builder.configureForSerialization() builder.configureForSerialization()