[IR] Introduce DumpIrTreeOptions for customizing IR dump

We plan to add more options => using a data class is better
than multiple function parameters
This commit is contained in:
Sergej Jaskiewicz
2023-05-10 16:52:18 +02:00
committed by Space Team
parent 1a8d5056bf
commit 3deea96b53
6 changed files with 152 additions and 73 deletions
@@ -9,6 +9,7 @@ import org.jetbrains.kotlin.backend.common.extensions.IrPluginContext
import org.jetbrains.kotlin.ir.UNDEFINED_OFFSET
import org.jetbrains.kotlin.ir.declarations.IrClass
import org.jetbrains.kotlin.ir.declarations.IrFile
import org.jetbrains.kotlin.ir.util.DumpIrTreeOptions
import org.jetbrains.kotlin.ir.util.dump
import org.jetbrains.kotlin.ir.util.dumpTreesFromLineNumber
import org.jetbrains.kotlin.name.ClassId
@@ -67,9 +68,9 @@ class IrTextDumpHandler(testServices: TestServices) : AbstractIrHandler(testServ
for ((testFile, irFile) in testFileToIrFile) {
if (testFile?.directives?.contains(EXTERNAL_FILE) == true) continue
var actualDump = irFile.dumpTreesFromLineNumber(lineNumber = 0, normalizeNames = true)
var actualDump = irFile.dumpTreesFromLineNumber(lineNumber = 0, DumpIrTreeOptions(normalizeNames = true))
if (actualDump.isEmpty()) {
actualDump = irFile.dumpTreesFromLineNumber(lineNumber = UNDEFINED_OFFSET, normalizeNames = true)
actualDump = irFile.dumpTreesFromLineNumber(lineNumber = UNDEFINED_OFFSET, DumpIrTreeOptions(normalizeNames = true))
}
builder.append(actualDump)
}
@@ -6,6 +6,7 @@
package org.jetbrains.kotlin.test.backend.handlers
import org.jetbrains.kotlin.ir.IrVerifier
import org.jetbrains.kotlin.ir.util.DumpIrTreeOptions
import org.jetbrains.kotlin.ir.util.deepCopyWithSymbols
import org.jetbrains.kotlin.ir.util.dumpTreesFromLineNumber
import org.jetbrains.kotlin.test.backend.handlers.IrTextDumpHandler.Companion.groupWithTestFiles
@@ -32,10 +33,10 @@ class IrTreeVerifierHandler(testServices: TestServices) : AbstractIrHandler(test
IrVerifier(assertions, module.frontendKind == FrontendKinds.FIR).verifyWithAssert(irFile)
val actualDump = irFile.dumpTreesFromLineNumber(lineNumber = 0, normalizeNames = true)
val actualDump = irFile.dumpTreesFromLineNumber(lineNumber = 0, DumpIrTreeOptions(normalizeNames = true))
val irFileCopy = irFile.deepCopyWithSymbols()
val dumpOfCopy = irFileCopy.dumpTreesFromLineNumber(lineNumber = 0, normalizeNames = true)
val dumpOfCopy = irFileCopy.dumpTreesFromLineNumber(lineNumber = 0, DumpIrTreeOptions(normalizeNames = true))
assertions.assertEquals(actualDump, dumpOfCopy) { "IR dump mismatch after deep copy with symbols" }
}
}