Add possibility to dump lowered ir in tests before lowering execution

This commit is contained in:
Ivan Kylchik
2021-12-13 14:08:39 +03:00
parent 592baf134e
commit fac98b7787
10 changed files with 5 additions and 2 deletions
@@ -113,7 +113,7 @@ fun <Data, Context> 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)
}
@@ -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<String>()
@@ -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
}
}
@@ -379,6 +379,7 @@ class JvmEnvironmentConfigurator(testServices: TestServices) : EnvironmentConfig
if (phases.isNotEmpty()) {
val phaseConfig = PhaseConfig(
jvmPhases,
toDumpStateBefore = phases,
toDumpStateAfter = phases,
dumpToDirectory = dumpDirectory.absolutePath
)