Formatting: IR test classes

This commit is contained in:
Dmitry Petrov
2018-01-11 15:27:51 +03:00
parent 704ce121bc
commit 2f09c51dca
5 changed files with 42 additions and 33 deletions
@@ -16,14 +16,14 @@
package org.jetbrains.kotlin.ir package org.jetbrains.kotlin.ir
import org.jetbrains.kotlin.backend.common.AbstractClosureAnnotator
import org.jetbrains.kotlin.backend.common.Closure
import org.jetbrains.kotlin.descriptors.ClassDescriptor import org.jetbrains.kotlin.descriptors.ClassDescriptor
import org.jetbrains.kotlin.descriptors.ConstructorDescriptor import org.jetbrains.kotlin.descriptors.ConstructorDescriptor
import org.jetbrains.kotlin.descriptors.FunctionDescriptor import org.jetbrains.kotlin.descriptors.FunctionDescriptor
import org.jetbrains.kotlin.ir.declarations.IrFile import org.jetbrains.kotlin.ir.declarations.IrFile
import org.jetbrains.kotlin.ir.visitors.acceptChildrenVoid import org.jetbrains.kotlin.ir.visitors.acceptChildrenVoid
import org.jetbrains.kotlin.test.KotlinTestUtils import org.jetbrains.kotlin.test.KotlinTestUtils
import org.jetbrains.kotlin.backend.common.AbstractClosureAnnotator
import org.jetbrains.kotlin.backend.common.Closure
import java.io.File import java.io.File
import java.io.PrintWriter import java.io.PrintWriter
import java.io.StringWriter import java.io.StringWriter
@@ -57,8 +57,7 @@ abstract class AbstractClosureAnnotatorTestCase : AbstractIrGeneratorTestCase()
override fun recordFunctionClosure(functionDescriptor: FunctionDescriptor, closure: Closure) { override fun recordFunctionClosure(functionDescriptor: FunctionDescriptor, closure: Closure) {
if (functionDescriptor is ConstructorDescriptor) { if (functionDescriptor is ConstructorDescriptor) {
actualOut.println("Closure for constructor ${functionDescriptor.containingDeclaration.name}:") actualOut.println("Closure for constructor ${functionDescriptor.containingDeclaration.name}:")
} } else {
else {
actualOut.println("Closure for function ${functionDescriptor.name}:") actualOut.println("Closure for function ${functionDescriptor.name}:")
} }
printClosure(closure) printClosure(closure)
@@ -69,10 +69,10 @@ abstract class AbstractIrGeneratorTestCase : CodegenTestCase() {
} }
val configuration = createConfiguration( val configuration = createConfiguration(
configurationKind, jdkKind, configurationKind, jdkKind,
listOf<File>(getAnnotationsJar()), listOf<File>(getAnnotationsJar()),
arrayOf(javaFilesDir).filterNotNull(), arrayOf(javaFilesDir).filterNotNull(),
files files
) )
myEnvironment = KotlinCoreEnvironment.createForTests(testRootDisposable, configuration, EnvironmentConfigFiles.JVM_CONFIG_FILES) myEnvironment = KotlinCoreEnvironment.createForTests(testRootDisposable, configuration, EnvironmentConfigFiles.JVM_CONFIG_FILES)
@@ -96,7 +96,7 @@ abstract class AbstractIrGeneratorTestCase : CodegenTestCase() {
private val IGNORE_ERRORS_PATTERN = Regex("""// !IGNORE_ERRORS""") private val IGNORE_ERRORS_PATTERN = Regex("""// !IGNORE_ERRORS""")
internal fun shouldIgnoreErrors(wholeFile: File): Boolean = internal fun shouldIgnoreErrors(wholeFile: File): Boolean =
IGNORE_ERRORS_PATTERN.containsMatchIn(wholeFile.readText()) IGNORE_ERRORS_PATTERN.containsMatchIn(wholeFile.readText())
internal fun createExpectedTextFile(testFile: TestFile, dir: File, fileName: String): File { internal fun createExpectedTextFile(testFile: TestFile, dir: File, fileName: String): File {
val textFile = File(dir, fileName) val textFile = File(dir, fileName)
@@ -110,10 +110,10 @@ abstract class AbstractIrGeneratorTestCase : CodegenTestCase() {
} }
fun generateIrModule( fun generateIrModule(
ktFilesToAnalyze: List<KtFile>, ktFilesToAnalyze: List<KtFile>,
environment: KotlinCoreEnvironment, environment: KotlinCoreEnvironment,
psi2ir: Psi2IrTranslator, psi2ir: Psi2IrTranslator,
shouldGenerate: (KtFile) -> Boolean shouldGenerate: (KtFile) -> Boolean
): IrModuleFragment { ): IrModuleFragment {
val analysisResult = JvmResolveUtil.analyze(ktFilesToAnalyze, environment) val analysisResult = JvmResolveUtil.analyze(ktFilesToAnalyze, environment)
if (!psi2ir.configuration.ignoreErrors) { if (!psi2ir.configuration.ignoreErrors) {
@@ -124,11 +124,21 @@ abstract class AbstractIrGeneratorTestCase : CodegenTestCase() {
return generateIrModule(fileToGenerate, analysisResult.moduleDescriptor, analysisResult.bindingContext, psi2ir) return generateIrModule(fileToGenerate, analysisResult.moduleDescriptor, analysisResult.bindingContext, psi2ir)
} }
fun generateIrModule(ktFiles: List<KtFile>, moduleDescriptor: ModuleDescriptor, bindingContext: BindingContext, ignoreErrors: Boolean = false) = fun generateIrModule(
generateIrModule(ktFiles, moduleDescriptor, bindingContext, Psi2IrTranslator(Psi2IrConfiguration(ignoreErrors))) ktFiles: List<KtFile>,
moduleDescriptor: ModuleDescriptor,
bindingContext: BindingContext,
ignoreErrors: Boolean = false
) =
generateIrModule(ktFiles, moduleDescriptor, bindingContext, Psi2IrTranslator(Psi2IrConfiguration(ignoreErrors)))
fun generateIrModule(ktFiles: List<KtFile>, moduleDescriptor: ModuleDescriptor, bindingContext: BindingContext, psi2ir: Psi2IrTranslator) = fun generateIrModule(
psi2ir.generateModule(moduleDescriptor, ktFiles, bindingContext) ktFiles: List<KtFile>,
moduleDescriptor: ModuleDescriptor,
bindingContext: BindingContext,
psi2ir: Psi2IrTranslator
) =
psi2ir.generateModule(moduleDescriptor, ktFiles, bindingContext)
} }
} }
@@ -36,13 +36,13 @@ abstract class AbstractIrSourceRangesTestCase : AbstractIrGeneratorTestCase() {
} }
private fun IrElement.dumpWithSourceLocations(fileEntry: SourceManager.FileEntry): String = private fun IrElement.dumpWithSourceLocations(fileEntry: SourceManager.FileEntry): String =
StringBuilder().also { StringBuilder().also {
acceptVoid(DumpSourceLocations(it, fileEntry)) acceptVoid(DumpSourceLocations(it, fileEntry))
}.toString() }.toString()
private class DumpSourceLocations( private class DumpSourceLocations(
out: Appendable, out: Appendable,
val fileEntry: SourceManager.FileEntry val fileEntry: SourceManager.FileEntry
) : IrElementVisitorVoid { ) : IrElementVisitorVoid {
val printer = Printer(out, " ") val printer = Printer(out, " ")
val elementRenderer = RenderIrElementVisitor() val elementRenderer = RenderIrElementVisitor()
@@ -56,9 +56,9 @@ abstract class AbstractIrSourceRangesTestCase : AbstractIrGeneratorTestCase() {
} }
private fun SourceRangeInfo.render() = private fun SourceRangeInfo.render() =
if (startLineNumber == endLineNumber) if (startLineNumber == endLineNumber)
"$startLineNumber:$startColumnNumber..$endColumnNumber" "$startLineNumber:$startColumnNumber..$endColumnNumber"
else else
"$startLineNumber:$startColumnNumber..$endLineNumber:$endColumnNumber" "$startLineNumber:$startColumnNumber..$endLineNumber:$endColumnNumber"
} }
} }
@@ -25,8 +25,8 @@ abstract class AbstractPsi2IrBoxTestCase : AbstractIrGeneratorTestCase() {
val irModule = generateIrModule(false) val irModule = generateIrModule(false)
val irModuleDump = irModule.dump() val irModuleDump = irModule.dump()
val expectedPath = wholeFile.canonicalPath val expectedPath = wholeFile.canonicalPath
// .replace("/codegen/box/", "/ir/irTextBox/") // .replace("/codegen/box/", "/ir/irTextBox/")
.replace(".kt", ".txt") .replace(".kt", ".txt")
val expectedFile = File(expectedPath) val expectedFile = File(expectedPath)
KotlinTestUtils.assertEqualsToFile(expectedFile, irModuleDump) KotlinTestUtils.assertEqualsToFile(expectedFile, irModuleDump)
} }
@@ -25,11 +25,11 @@ import java.io.File
abstract class AbstractPsi2IrDiagnosticsTest : AbstractDiagnosticsTest() { abstract class AbstractPsi2IrDiagnosticsTest : AbstractDiagnosticsTest() {
override fun performAdditionalChecksAfterDiagnostics( override fun performAdditionalChecksAfterDiagnostics(
testDataFile: File, testDataFile: File,
testFiles: List<TestFile>, testFiles: List<TestFile>,
moduleFiles: Map<TestModule?, List<TestFile>>, moduleFiles: Map<TestModule?, List<TestFile>>,
moduleDescriptors: Map<TestModule?, ModuleDescriptorImpl>, moduleDescriptors: Map<TestModule?, ModuleDescriptorImpl>,
moduleBindings: Map<TestModule?, BindingContext> moduleBindings: Map<TestModule?, BindingContext>
) { ) {
val actualIrDump = StringBuilder() val actualIrDump = StringBuilder()
for (module in moduleFiles.keys) { for (module in moduleFiles.keys) {