From fac98b7787dcbfb3e5ed795c47ea1dd0f424287e Mon Sep 17 00:00:00 2001 From: Ivan Kylchik Date: Mon, 13 Dec 2021 14:08:39 +0300 Subject: [PATCH] Add possibility to dump lowered ir in tests before lowering execution --- .../jetbrains/kotlin/backend/common/phaser/DumperVerifier.kt | 2 +- ...ng.ir => constTrimIndent_AFTER.ConstEvaluationLowering.ir} | 0 ...ng.ir => constTrimMargin_AFTER.ConstEvaluationLowering.ir} | 0 ...nLowering.ir => enumName_AFTER.ConstEvaluationLowering.ir} | 0 ...owering.ir => ifConstVal_AFTER.ConstEvaluationLowering.ir} | 0 ...ring.ir => kCallableName_AFTER.ConstEvaluationLowering.ir} | 0 ...r => primitiveOperations_AFTER.ConstEvaluationLowering.ir} | 0 ...wering.ir => stdlibConst_AFTER.ConstEvaluationLowering.ir} | 0 .../kotlin/test/backend/handlers/PhasedIrDumpHandler.kt | 4 +++- .../test/services/configuration/JvmEnvironmentConfigurator.kt | 1 + 10 files changed, 5 insertions(+), 2 deletions(-) rename compiler/testData/ir/loweredIr/interpreter/{constTrimIndent_ConstEvaluationLowering.ir => constTrimIndent_AFTER.ConstEvaluationLowering.ir} (100%) rename compiler/testData/ir/loweredIr/interpreter/{constTrimMargin_ConstEvaluationLowering.ir => constTrimMargin_AFTER.ConstEvaluationLowering.ir} (100%) rename compiler/testData/ir/loweredIr/interpreter/{enumName_ConstEvaluationLowering.ir => enumName_AFTER.ConstEvaluationLowering.ir} (100%) rename compiler/testData/ir/loweredIr/interpreter/{ifConstVal_ConstEvaluationLowering.ir => ifConstVal_AFTER.ConstEvaluationLowering.ir} (100%) rename compiler/testData/ir/loweredIr/interpreter/{kCallableName_ConstEvaluationLowering.ir => kCallableName_AFTER.ConstEvaluationLowering.ir} (100%) rename compiler/testData/ir/loweredIr/interpreter/{primitiveOperations_ConstEvaluationLowering.ir => primitiveOperations_AFTER.ConstEvaluationLowering.ir} (100%) rename compiler/testData/ir/loweredIr/interpreter/{stdlibConst_ConstEvaluationLowering.ir => stdlibConst_AFTER.ConstEvaluationLowering.ir} (100%) diff --git a/compiler/ir/backend.common/src/org/jetbrains/kotlin/backend/common/phaser/DumperVerifier.kt b/compiler/ir/backend.common/src/org/jetbrains/kotlin/backend/common/phaser/DumperVerifier.kt index 5537f565197..8d071bc4ff0 100644 --- a/compiler/ir/backend.common/src/org/jetbrains/kotlin/backend/common/phaser/DumperVerifier.kt +++ b/compiler/ir/backend.common/src/org/jetbrains/kotlin/backend/common/phaser/DumperVerifier.kt @@ -113,7 +113,7 @@ fun dumpToFile( val dumpStrategy = System.getProperty("org.jetbrains.kotlin.compiler.ir.dump.strategy") val extPrefix = if (dumpStrategy == "KotlinLike") "kt." else "" - val fileName = "${phaseIdFormatted}_${actionState.phase.name}.$extPrefix$fileExtension" + val fileName = "${phaseIdFormatted}_${actionState.beforeOrAfter}.${actionState.phase.name}.$extPrefix$fileExtension" File(directoryFile, fileName).writeText(dumpContent) } diff --git a/compiler/testData/ir/loweredIr/interpreter/constTrimIndent_ConstEvaluationLowering.ir b/compiler/testData/ir/loweredIr/interpreter/constTrimIndent_AFTER.ConstEvaluationLowering.ir similarity index 100% rename from compiler/testData/ir/loweredIr/interpreter/constTrimIndent_ConstEvaluationLowering.ir rename to compiler/testData/ir/loweredIr/interpreter/constTrimIndent_AFTER.ConstEvaluationLowering.ir diff --git a/compiler/testData/ir/loweredIr/interpreter/constTrimMargin_ConstEvaluationLowering.ir b/compiler/testData/ir/loweredIr/interpreter/constTrimMargin_AFTER.ConstEvaluationLowering.ir similarity index 100% rename from compiler/testData/ir/loweredIr/interpreter/constTrimMargin_ConstEvaluationLowering.ir rename to compiler/testData/ir/loweredIr/interpreter/constTrimMargin_AFTER.ConstEvaluationLowering.ir diff --git a/compiler/testData/ir/loweredIr/interpreter/enumName_ConstEvaluationLowering.ir b/compiler/testData/ir/loweredIr/interpreter/enumName_AFTER.ConstEvaluationLowering.ir similarity index 100% rename from compiler/testData/ir/loweredIr/interpreter/enumName_ConstEvaluationLowering.ir rename to compiler/testData/ir/loweredIr/interpreter/enumName_AFTER.ConstEvaluationLowering.ir diff --git a/compiler/testData/ir/loweredIr/interpreter/ifConstVal_ConstEvaluationLowering.ir b/compiler/testData/ir/loweredIr/interpreter/ifConstVal_AFTER.ConstEvaluationLowering.ir similarity index 100% rename from compiler/testData/ir/loweredIr/interpreter/ifConstVal_ConstEvaluationLowering.ir rename to compiler/testData/ir/loweredIr/interpreter/ifConstVal_AFTER.ConstEvaluationLowering.ir diff --git a/compiler/testData/ir/loweredIr/interpreter/kCallableName_ConstEvaluationLowering.ir b/compiler/testData/ir/loweredIr/interpreter/kCallableName_AFTER.ConstEvaluationLowering.ir similarity index 100% rename from compiler/testData/ir/loweredIr/interpreter/kCallableName_ConstEvaluationLowering.ir rename to compiler/testData/ir/loweredIr/interpreter/kCallableName_AFTER.ConstEvaluationLowering.ir diff --git a/compiler/testData/ir/loweredIr/interpreter/primitiveOperations_ConstEvaluationLowering.ir b/compiler/testData/ir/loweredIr/interpreter/primitiveOperations_AFTER.ConstEvaluationLowering.ir similarity index 100% rename from compiler/testData/ir/loweredIr/interpreter/primitiveOperations_ConstEvaluationLowering.ir rename to compiler/testData/ir/loweredIr/interpreter/primitiveOperations_AFTER.ConstEvaluationLowering.ir diff --git a/compiler/testData/ir/loweredIr/interpreter/stdlibConst_ConstEvaluationLowering.ir b/compiler/testData/ir/loweredIr/interpreter/stdlibConst_AFTER.ConstEvaluationLowering.ir similarity index 100% rename from compiler/testData/ir/loweredIr/interpreter/stdlibConst_ConstEvaluationLowering.ir rename to compiler/testData/ir/loweredIr/interpreter/stdlibConst_AFTER.ConstEvaluationLowering.ir diff --git a/compiler/tests-common-new/tests/org/jetbrains/kotlin/test/backend/handlers/PhasedIrDumpHandler.kt b/compiler/tests-common-new/tests/org/jetbrains/kotlin/test/backend/handlers/PhasedIrDumpHandler.kt index 7a15c80783a..aa881f82b18 100644 --- a/compiler/tests-common-new/tests/org/jetbrains/kotlin/test/backend/handlers/PhasedIrDumpHandler.kt +++ b/compiler/tests-common-new/tests/org/jetbrains/kotlin/test/backend/handlers/PhasedIrDumpHandler.kt @@ -5,6 +5,7 @@ package org.jetbrains.kotlin.test.backend.handlers +import org.jetbrains.kotlin.backend.common.phaser.BeforeOrAfter import org.jetbrains.kotlin.test.directives.CodegenTestDirectives import org.jetbrains.kotlin.test.model.BinaryArtifacts import org.jetbrains.kotlin.test.model.TestModule @@ -15,7 +16,7 @@ class PhasedIrDumpHandler(testServices: TestServices) : JvmBinaryArtifactHandler override fun processModule(module: TestModule, info: BinaryArtifacts.Jvm) { if (CodegenTestDirectives.DUMP_IR_FOR_GIVEN_PHASES !in module.directives) return val dumpDirectory = testServices.getOrCreateTempDirectory(DUMPED_IR_FOLDER_NAME) - val dumpFiles = dumpDirectory.resolve(module.name).listFiles() ?: return + val dumpFiles = dumpDirectory.resolve(module.name).listFiles()?.filter { it.name.contains(AFTER_PREFIX) } ?: return val testFile = module.files.first() val testDirectory = testFile.originalFile.parentFile val visitedFiles = mutableListOf() @@ -38,5 +39,6 @@ class PhasedIrDumpHandler(testServices: TestServices) : JvmBinaryArtifactHandler companion object { const val DUMPED_IR_FOLDER_NAME = "dumped_ir" + val AFTER_PREFIX = BeforeOrAfter.AFTER.name } } diff --git a/compiler/tests-common-new/tests/org/jetbrains/kotlin/test/services/configuration/JvmEnvironmentConfigurator.kt b/compiler/tests-common-new/tests/org/jetbrains/kotlin/test/services/configuration/JvmEnvironmentConfigurator.kt index daa23cb3e9d..ab6d950f5ca 100644 --- a/compiler/tests-common-new/tests/org/jetbrains/kotlin/test/services/configuration/JvmEnvironmentConfigurator.kt +++ b/compiler/tests-common-new/tests/org/jetbrains/kotlin/test/services/configuration/JvmEnvironmentConfigurator.kt @@ -379,6 +379,7 @@ class JvmEnvironmentConfigurator(testServices: TestServices) : EnvironmentConfig if (phases.isNotEmpty()) { val phaseConfig = PhaseConfig( jvmPhases, + toDumpStateBefore = phases, toDumpStateAfter = phases, dumpToDirectory = dumpDirectory.absolutePath )