Add possibility to dump lowered ir in tests before lowering execution
This commit is contained in:
+1
-1
@@ -113,7 +113,7 @@ fun <Data, Context> dumpToFile(
|
|||||||
val dumpStrategy = System.getProperty("org.jetbrains.kotlin.compiler.ir.dump.strategy")
|
val dumpStrategy = System.getProperty("org.jetbrains.kotlin.compiler.ir.dump.strategy")
|
||||||
val extPrefix = if (dumpStrategy == "KotlinLike") "kt." else ""
|
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)
|
File(directoryFile, fileName).writeText(dumpContent)
|
||||||
}
|
}
|
||||||
|
|||||||
+3
-1
@@ -5,6 +5,7 @@
|
|||||||
|
|
||||||
package org.jetbrains.kotlin.test.backend.handlers
|
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.directives.CodegenTestDirectives
|
||||||
import org.jetbrains.kotlin.test.model.BinaryArtifacts
|
import org.jetbrains.kotlin.test.model.BinaryArtifacts
|
||||||
import org.jetbrains.kotlin.test.model.TestModule
|
import org.jetbrains.kotlin.test.model.TestModule
|
||||||
@@ -15,7 +16,7 @@ class PhasedIrDumpHandler(testServices: TestServices) : JvmBinaryArtifactHandler
|
|||||||
override fun processModule(module: TestModule, info: BinaryArtifacts.Jvm) {
|
override fun processModule(module: TestModule, info: BinaryArtifacts.Jvm) {
|
||||||
if (CodegenTestDirectives.DUMP_IR_FOR_GIVEN_PHASES !in module.directives) return
|
if (CodegenTestDirectives.DUMP_IR_FOR_GIVEN_PHASES !in module.directives) return
|
||||||
val dumpDirectory = testServices.getOrCreateTempDirectory(DUMPED_IR_FOLDER_NAME)
|
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 testFile = module.files.first()
|
||||||
val testDirectory = testFile.originalFile.parentFile
|
val testDirectory = testFile.originalFile.parentFile
|
||||||
val visitedFiles = mutableListOf<String>()
|
val visitedFiles = mutableListOf<String>()
|
||||||
@@ -38,5 +39,6 @@ class PhasedIrDumpHandler(testServices: TestServices) : JvmBinaryArtifactHandler
|
|||||||
|
|
||||||
companion object {
|
companion object {
|
||||||
const val DUMPED_IR_FOLDER_NAME = "dumped_ir"
|
const val DUMPED_IR_FOLDER_NAME = "dumped_ir"
|
||||||
|
val AFTER_PREFIX = BeforeOrAfter.AFTER.name
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+1
@@ -379,6 +379,7 @@ class JvmEnvironmentConfigurator(testServices: TestServices) : EnvironmentConfig
|
|||||||
if (phases.isNotEmpty()) {
|
if (phases.isNotEmpty()) {
|
||||||
val phaseConfig = PhaseConfig(
|
val phaseConfig = PhaseConfig(
|
||||||
jvmPhases,
|
jvmPhases,
|
||||||
|
toDumpStateBefore = phases,
|
||||||
toDumpStateAfter = phases,
|
toDumpStateAfter = phases,
|
||||||
dumpToDirectory = dumpDirectory.absolutePath
|
dumpToDirectory = dumpDirectory.absolutePath
|
||||||
)
|
)
|
||||||
|
|||||||
Reference in New Issue
Block a user