diff --git a/compiler/tests-compiler-utils/tests/org/jetbrains/kotlin/codegen/TestModel.kt b/compiler/tests-compiler-utils/tests/org/jetbrains/kotlin/codegen/TestModel.kt index 258233e22e7..1fb85690ad5 100644 --- a/compiler/tests-compiler-utils/tests/org/jetbrains/kotlin/codegen/TestModel.kt +++ b/compiler/tests-compiler-utils/tests/org/jetbrains/kotlin/codegen/TestModel.kt @@ -38,11 +38,23 @@ class ModuleInfo(val moduleName: String) { abstract fun execute(testDirectory: File, sourceDirectory: File) } - class ModuleStep(val id: Int, val dependencies: Collection, val dirtyFiles: Collection, val modifications: List) + class ModuleStep( + val id: Int, + val dependencies: Collection, + val dirtyFiles: Collection, + val modifications: List, + val directives: Set + ) + + val steps = mutableListOf() } +enum class StepDirectives(val mnemonic: String) { + FAST_PATH_UPDATE("FP") +} + const val MODULES_LIST = "MODULES" const val PROJECT_INFO_FILE = "project.info" const val MODULE_INFO_FILE = "module.info" @@ -183,10 +195,18 @@ class ModuleInfoParser(infoFile: File) : InfoParser(infoFile) { return modifications } + private fun MutableSet.parseStepFlags(flags: String) { + val tokens = flags.trim().split(" ").map { it.trim() } + for (directive in StepDirectives.values()) { + if (directive.mnemonic in tokens) add(directive) + } + } + private fun parseStep(stepId: Int): ModuleInfo.ModuleStep { val dependencies = mutableSetOf() val dirtyFiles = mutableSetOf() val modifications = mutableListOf() + val directives = mutableSetOf() loop { line -> if (line.matches(STEP_PATTERN.toRegex())) @@ -201,12 +221,13 @@ class ModuleInfoParser(infoFile: File) : InfoParser(infoFile) { "dependencies" -> line.substring(opIndex + 1).split(",").filter { it.isNotBlank() }.forEach { dependencies.add(it.trim()) } "dirty" -> line.substring(opIndex + 1).split(",").filter { it.isNotBlank() }.forEach { dirtyFiles.add(it.trim()) } "modifications" -> modifications.addAll(parseModifications()) + "flags" -> directives.parseStepFlags(line.substring(opIndex + 1)) else -> println(diagnosticMessage("Unknown op $op", line)) } false } - return ModuleInfo.ModuleStep(stepId, dependencies, dirtyFiles, modifications) + return ModuleInfo.ModuleStep(stepId, dependencies, dirtyFiles, modifications, directives) } override fun parse(entryName: String): ModuleInfo {