- Render IrModule.
- Dump IR for box tests to .txt.
This commit is contained in:
committed by
Dmitry Petrov
parent
15ed21ebae
commit
993c3fe51e
@@ -21,6 +21,7 @@ import org.jetbrains.kotlin.cli.jvm.compiler.EnvironmentConfigFiles
|
||||
import org.jetbrains.kotlin.cli.jvm.compiler.KotlinCoreEnvironment
|
||||
import org.jetbrains.kotlin.codegen.CodegenTestCase
|
||||
import org.jetbrains.kotlin.ir.declarations.IrFile
|
||||
import org.jetbrains.kotlin.ir.declarations.IrModule
|
||||
import org.jetbrains.kotlin.psi2ir.Psi2IrConfiguration
|
||||
import org.jetbrains.kotlin.psi2ir.Psi2IrTranslator
|
||||
import org.jetbrains.kotlin.resolve.AnalyzingUtils
|
||||
@@ -76,7 +77,7 @@ abstract class AbstractIrGeneratorTestCase : CodegenTestCase() {
|
||||
|
||||
protected abstract fun doTest(wholeFile: File, testFiles: List<TestFile>)
|
||||
|
||||
protected fun generateIrFilesAsSingleModule(testFiles: List<TestFile>, ignoreErrors: Boolean = false): Map<TestFile, IrFile> {
|
||||
protected fun generateIrModule(ignoreErrors: Boolean = false): IrModule {
|
||||
assert(myFiles != null) { "myFiles not initialized" }
|
||||
assert(myEnvironment != null) { "myEnvironment not initialized" }
|
||||
val analysisResult = JvmResolveUtil.analyze(myFiles.psiFiles, myEnvironment)
|
||||
@@ -86,6 +87,11 @@ abstract class AbstractIrGeneratorTestCase : CodegenTestCase() {
|
||||
}
|
||||
val psi2ir = Psi2IrTranslator(Psi2IrConfiguration(ignoreErrors))
|
||||
val irModule = psi2ir.generateModule(analysisResult.moduleDescriptor, myFiles.psiFiles, analysisResult.bindingContext)
|
||||
return irModule
|
||||
}
|
||||
|
||||
protected fun generateIrFilesAsSingleModule(testFiles: List<TestFile>, ignoreErrors: Boolean = false): Map<TestFile, IrFile> {
|
||||
val irModule = generateIrModule(ignoreErrors)
|
||||
val ktFiles = testFiles.filter { it.name.endsWith(".kt") }
|
||||
return ktFiles.zip(irModule.files).toMap()
|
||||
}
|
||||
|
||||
+9
-2
@@ -16,11 +16,18 @@
|
||||
|
||||
package org.jetbrains.kotlin.ir
|
||||
|
||||
import org.jetbrains.kotlin.ir.util.dump
|
||||
import org.jetbrains.kotlin.test.KotlinTestUtils
|
||||
import java.io.File
|
||||
|
||||
abstract class AbstractPsi2IrAcceptanceTestCase : AbstractIrGeneratorTestCase() {
|
||||
override fun doTest(wholeFile: File, testFiles: List<TestFile>) {
|
||||
// Just make sure that nothing interesting happens - e.g., no exceptions thrown
|
||||
generateIrFilesAsSingleModule(testFiles, false)
|
||||
val irModule = generateIrModule(false)
|
||||
val irModuleDump = irModule.dump()
|
||||
val expectedPath = wholeFile.canonicalPath
|
||||
// .replace("/codegen/box/", "/ir/irTextBox/")
|
||||
.replace(".kt", ".txt")
|
||||
val expectedFile = File(expectedPath)
|
||||
KotlinTestUtils.assertEqualsToFile(expectedFile, irModuleDump)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -36,6 +36,9 @@ class RenderIrElementVisitor : IrElementVisitor<String, Nothing?> {
|
||||
override fun visitDeclaration(declaration: IrDeclaration, data: Nothing?): String =
|
||||
"? ${declaration.javaClass.simpleName} ${declaration.descriptor.name}"
|
||||
|
||||
override fun visitModule(declaration: IrModule, data: Nothing?): String =
|
||||
"MODULE ${declaration.descriptor.name}"
|
||||
|
||||
override fun visitFile(declaration: IrFile, data: Nothing?): String =
|
||||
"FILE ${declaration.name}"
|
||||
|
||||
|
||||
Reference in New Issue
Block a user