- Render IrModule.

- Dump IR for box tests to .txt.
This commit is contained in:
Dmitry Petrov
2016-09-05 17:39:17 +03:00
committed by Dmitry Petrov
parent 15ed21ebae
commit 993c3fe51e
3 changed files with 19 additions and 3 deletions
@@ -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()
}
@@ -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}"