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_FIR: JVM_IR
// 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
interface Flow<T> {
@@ -1,5 +1,6 @@
// FULL_JDK
// IGNORE_BACKEND_FIR: JVM_IR
// IGNORE_BACKEND_FIR_MULTI_MODULE: JVM_IR
// TARGET_BACKEND: JVM
// FILE: 1.kt
@@ -1,5 +1,6 @@
// FULL_JDK
// IGNORE_BACKEND_FIR: JVM_IR
// IGNORE_BACKEND_FIR_MULTI_MODULE: JVM_IR
// TARGET_BACKEND: JVM
// FILE: 1.kt
@@ -1,5 +1,6 @@
// FULL_JDK
// IGNORE_BACKEND_FIR: JVM_IR
// IGNORE_BACKEND_FIR_MULTI_MODULE: JVM_IR
// TARGET_BACKEND: JVM
// FILE: 1.kt
@@ -1,6 +1,7 @@
// FULL_JDK
// NO_CHECK_LAMBDA_INLINING
// IGNORE_BACKEND_FIR: JVM_IR
// IGNORE_BACKEND_FIR_MULTI_MODULE: JVM_IR
// TARGET_BACKEND: JVM
// FILE: 1.kt
@@ -1,6 +1,7 @@
// IGNORE_BACKEND: JVM, 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_FIR_MULTI_MODULE: JVM_IR
// FILE: 1.kt
package test
@@ -2,6 +2,7 @@
// !LANGUAGE: -UseCorrectExecutionOrderForVarargArguments
// IGNORE_BACKEND: JS
// IGNORE_BACKEND_FIR: JVM_IR
// IGNORE_BACKEND_FIR_MULTI_MODULE: JVM_IR
// NO_CHECK_LAMBDA_INLINING
// KJS_WITH_FULL_RUNTIME
// FILE: 1.kt
@@ -7,6 +7,7 @@
// IGNORE_BACKEND: JS_IR_ES6
// IGNORE_BACKEND_MULTI_MODULE: JVM_IR, JVM_MULTI_MODULE_IR_AGAINST_OLD
// IGNORE_BACKEND_FIR: JVM_IR
// IGNORE_BACKEND_FIR_MULTI_MODULE: JVM_IR
// NO_CHECK_LAMBDA_INLINING
// KJS_WITH_FULL_RUNTIME
// FILE: 1.kt
@@ -1,6 +1,7 @@
// !LANGUAGE: +MultiPlatformProjects
// IGNORE_BACKEND: WASM
// IGNORE_BACKEND_FIR: JVM_IR
// IGNORE_BACKEND_FIR_MULTI_MODULE: JVM_IR
// NO_CHECK_LAMBDA_INLINING
// 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
@@ -1,6 +1,7 @@
// IGNORE_BACKEND: JVM
// IGNORE_BACKEND_MULTI_MODULE: JVM, JVM_MULTI_MODULE_OLD_AGAINST_IR
// IGNORE_BACKEND_FIR: JVM_IR
// IGNORE_BACKEND_FIR_MULTI_MODULE: JVM_IR
// NO_CHECK_LAMBDA_INLINING
// FILE: 1.kt
@@ -1,4 +1,5 @@
// IGNORE_BACKEND_FIR: JVM_IR
// IGNORE_BACKEND_FIR_MULTI_MODULE: JVM_IR
// FILE: 1.kt
package test
@@ -1,4 +1,5 @@
// IGNORE_BACKEND_FIR: JVM_IR
// IGNORE_BACKEND_FIR_MULTI_MODULE: JVM_IR
// FILE: 1.kt
package test
@@ -2,6 +2,7 @@
// NO_CHECK_LAMBDA_INLINING
// IGNORE_BACKEND: JVM_IR
// IGNORE_BACKEND_FIR: JVM_IR
// IGNORE_BACKEND_FIR_MULTI_MODULE: JVM_IR
// FILE: 1.kt
package builders
inline fun call(crossinline init: () -> Unit) {
@@ -11,20 +11,20 @@ _2Kt
+ 2 1.kt
builders/_1Kt
*L
1#1,32:1
17#1,3:34
20#1,6:38
8#2:33
8#2:37
1#1,33:1
18#1,3:35
21#1,6:39
9#2:34
9#2:38
*S KotlinDebug
*F
+ 1 2.kt
_2Kt
*L
30#1:34,3
30#1:38,6
19#1:33
30#1:37
31#1:35,3
31#1:39,6
20#1:34
31#1:38
*E
SMAP
@@ -35,7 +35,7 @@ Kotlin
+ 1 2.kt
_2Kt$test$1$1
*L
1#1,32:1
1#1,33:1
*E
SMAP
@@ -46,6 +46,6 @@ Kotlin
+ 1 2.kt
_2Kt$test$1$1
*L
1#1,32:1
1#1,33:1
*E
@@ -1,6 +1,7 @@
// IGNORE_BACKEND_MULTI_MODULE: JVM_IR, JVM_MULTI_MODULE_IR_AGAINST_OLD
// IGNORE_BACKEND: JVM_IR
// IGNORE_BACKEND_FIR: JVM_IR
// IGNORE_BACKEND_FIR_MULTI_MODULE: JVM_IR
// NO_CHECK_LAMBDA_INLINING
// FILE: 1.kt
package builders
@@ -11,20 +11,20 @@ _2Kt
+ 2 1.kt
builders/_1Kt
*L
1#1,34:1
17#1,3:36
20#1,8:40
8#2:35
8#2:39
1#1,35:1
18#1,3:37
21#1,8:41
9#2:36
9#2:40
*S KotlinDebug
*F
+ 1 2.kt
_2Kt
*L
32#1:36,3
32#1:40,8
19#1:35
32#1:39
33#1:37,3
33#1:41,8
20#1:36
33#1:40
*E
SMAP
@@ -35,7 +35,7 @@ Kotlin
+ 1 2.kt
_2Kt$test$1$1
*L
1#1,34:1
1#1,35:1
*E
SMAP
@@ -46,6 +46,6 @@ Kotlin
+ 1 2.kt
_2Kt$test$1$1
*L
1#1,34:1
1#1,35:1
*E
@@ -1,6 +1,7 @@
// IGNORE
// 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_FIR_MULTI_MODULE: JVM_IR
// FILE: 1.kt
// NO_SMAP_DUMP
@@ -9,15 +9,15 @@ _2Kt
+ 2 1.kt
builders/_1Kt
*L
1#1,35:1
14#2,3:36
10#2,15:39
1#1,36:1
15#2,3:37
11#2,15:40
*S KotlinDebug
*F
+ 1 2.kt
_2Kt
*L
33#1:36,3
33#1:39,15
34#1:37,3
34#1:40,15
*E
@@ -4,6 +4,7 @@
// IGNORE_BACKEND: JVM, 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_FIR_MULTI_MODULE: JVM_IR
// FILE: 1.kt
package test
@@ -1,4 +1,5 @@
// IGNORE_BACKEND_FIR: JVM_IR
// IGNORE_BACKEND_FIR_MULTI_MODULE: JVM_IR
// !LANGUAGE: -ProhibitSuperCallsFromPublicInline
// FILE: 1.kt
@@ -1,4 +1,5 @@
// IGNORE_BACKEND_FIR: JVM_IR
// IGNORE_BACKEND_FIR_MULTI_MODULE: JVM_IR
// !LANGUAGE: -ProhibitSuperCallsFromPublicInline
// FILE: 1.kt
@@ -1,4 +1,5 @@
// IGNORE_BACKEND_FIR: JVM_IR
// IGNORE_BACKEND_FIR_MULTI_MODULE: JVM_IR
// !LANGUAGE: -ProhibitSuperCallsFromPublicInline
// FILE: 1.kt
@@ -61,7 +61,7 @@ class BlackBoxCodegenSuppressor(
fun extractIgnoreDirective(module: TestModule): ValueDirective<TargetBackend>? {
return when (module.frontendKind) {
FrontendKinds.ClassicFrontend -> customIgnoreDirective ?: IGNORE_BACKEND
FrontendKinds.FIR -> IGNORE_BACKEND_FIR
FrontendKinds.FIR -> customIgnoreDirective ?: IGNORE_BACKEND_FIR
else -> null
}
}
@@ -29,6 +29,11 @@ object CodegenTestDirectives : SimpleDirectivesContainer() {
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(
description = """
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.builders.TestConfigurationBuilder
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.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.ClassicFrontend2IrConverter
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 frontendToBackendConverter: Constructor<Frontend2BackendConverter<R, I>>
abstract val backendFacade: Constructor<BackendFacade<I, BinaryArtifacts.Jvm>>
open val directiveToSuppressTest: ValueDirective<TargetBackend> = IGNORE_BACKEND_MULTI_MODULE
override fun TestConfigurationBuilder.configuration() {
commonConfigurationForCodegenTest(targetFrontend, frontendFacade, frontendToBackendConverter, backendFacade)
@@ -48,7 +51,7 @@ abstract class AbstractCompileKotlinAgainstInlineKotlinTestBase<R : ResultingArt
useModuleStructureTransformers(
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>>
get() = ::JvmIrBackendFacade
override val directiveToSuppressTest = IGNORE_BACKEND_FIR_MULTI_MODULE
override fun configure(builder: TestConfigurationBuilder) {
super.configure(builder)
builder.configureForSerialization()