From 8ed7e31b5fcff1d2ba487612fc67dfaf44c6ee46 Mon Sep 17 00:00:00 2001 From: Ivan Kylchik Date: Mon, 25 Dec 2023 12:08:04 +0100 Subject: [PATCH] [JVM] Validate lowered JVM IR only if it was explicitly requested This is an addition to the f5bb4774598cdaf6d3a34965ee260aeb2511a8e0 commit. Earlier, some of the validation checks were moved from `stickyPostconditions` into separate lowering. But these post-conditions checks were launched only when several flags were set to true. In this commit, we just return to such behavior. #KT-64116 --- .../src/org/jetbrains/kotlin/backend/jvm/JvmLoweringPhases.kt | 2 +- .../org/jetbrains/kotlin/backend/jvm/lower/irValidation.kt | 4 +++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/compiler/ir/backend.jvm/lower/src/org/jetbrains/kotlin/backend/jvm/JvmLoweringPhases.kt b/compiler/ir/backend.jvm/lower/src/org/jetbrains/kotlin/backend/jvm/JvmLoweringPhases.kt index c00e2df7f8c..79777645270 100644 --- a/compiler/ir/backend.jvm/lower/src/org/jetbrains/kotlin/backend/jvm/JvmLoweringPhases.kt +++ b/compiler/ir/backend.jvm/lower/src/org/jetbrains/kotlin/backend/jvm/JvmLoweringPhases.kt @@ -82,7 +82,7 @@ private val validateIrAfterLowering = makeCustomPhase( ) private val validateJvmIrAfterLowering = makeCustomPhase( - { _, module -> validateJvmIr(module) }, + { context, module -> validateJvmIr(context, module) }, name = "ValidateJvmIrAfterLowering", description = "Validate that IR after lowering is correctly structured by Kotlin JVM rules" ) diff --git a/compiler/ir/backend.jvm/lower/src/org/jetbrains/kotlin/backend/jvm/lower/irValidation.kt b/compiler/ir/backend.jvm/lower/src/org/jetbrains/kotlin/backend/jvm/lower/irValidation.kt index 1af8ca61521..20218950907 100644 --- a/compiler/ir/backend.jvm/lower/src/org/jetbrains/kotlin/backend/jvm/lower/irValidation.kt +++ b/compiler/ir/backend.jvm/lower/src/org/jetbrains/kotlin/backend/jvm/lower/irValidation.kt @@ -27,7 +27,9 @@ private fun checkAllFileLevelDeclarationsAreClasses(module: IrModuleFragment) { }) } -fun validateJvmIr(module: IrModuleFragment) { +fun validateJvmIr(context: JvmBackendContext, module: IrModuleFragment) { + if (!context.config.shouldValidateIr) return + checkAllFileLevelDeclarationsAreClasses(module) val validator = object : IrElementVisitorVoid { override fun visitElement(element: IrElement) {