diff --git a/compiler/tests-common/tests/org/jetbrains/kotlin/codegen/AbstractCheckLocalVariablesTableTest.kt b/compiler/tests-common/tests/org/jetbrains/kotlin/codegen/AbstractCheckLocalVariablesTableTest.kt index cb4fee58df6..090295911cf 100644 --- a/compiler/tests-common/tests/org/jetbrains/kotlin/codegen/AbstractCheckLocalVariablesTableTest.kt +++ b/compiler/tests-common/tests/org/jetbrains/kotlin/codegen/AbstractCheckLocalVariablesTableTest.kt @@ -17,7 +17,6 @@ package org.jetbrains.kotlin.codegen import com.google.common.io.Files -import com.intellij.openapi.util.io.FileUtil import com.intellij.openapi.util.text.StringUtil import com.intellij.util.containers.ContainerUtil import junit.framework.TestCase @@ -35,15 +34,12 @@ import java.util.regex.Pattern */ abstract class AbstractCheckLocalVariablesTableTest : CodegenTestCase() { - protected lateinit var ktFile: File @Throws(Exception::class) override fun doMultiFileTest(wholeFile: File, files: List, javaFilesDir: File?) { - ktFile = wholeFile - val text = FileUtil.loadFile(ktFile, true) compile(files, javaFilesDir) - val classAndMethod = parseClassAndMethodSignature() + val classAndMethod = parseClassAndMethodSignature(wholeFile) val split = classAndMethod.split("\\.".toRegex()).dropLastWhile { it.isEmpty() }.toTypedArray() assert(split.size == 2) { "Exactly one dot is expected: $classAndMethod" } val classFileRegex = StringUtil.escapeToRegexp(split[0] + ".class").replace("\\*", ".+") @@ -55,15 +51,18 @@ abstract class AbstractCheckLocalVariablesTableTest : CodegenTestCase() { val pathsString = outputFiles.joinToString { it.relativePath } assertNotNull("Couldn't find class file for pattern $classFileRegex in: $pathsString", outputFile) - val cr = ClassReader(outputFile!!.asByteArray()) - val actualLocalVariables = readLocalVariable(cr, methodName) + val actualLocalVariables = readLocalVariable(ClassReader(outputFile!!.asByteArray()), methodName) - doCompare(text, actualLocalVariables) + doCompare(wholeFile, files.single().content, actualLocalVariables) } - protected open fun doCompare(text: String, actualLocalVariables: List) { + protected open fun doCompare( + testFile: File, + text: String, + actualLocalVariables: List + ) { KotlinTestUtils.assertEqualsToFile( - ktFile, + testFile, text.substring(0, text.indexOf("// VARIABLE : ")) + getActualVariablesAsString( actualLocalVariables ) @@ -82,8 +81,8 @@ abstract class AbstractCheckLocalVariablesTableTest : CodegenTestCase() { } @Throws(IOException::class) - private fun parseClassAndMethodSignature(): String { - val lines = Files.readLines(ktFile, Charset.forName("utf-8")) + private fun parseClassAndMethodSignature(testFile: File): String { + val lines = Files.readLines(testFile, Charset.forName("utf-8")) for (line in lines) { val methodMatcher = methodPattern.matcher(line) if (methodMatcher.matches()) { diff --git a/compiler/tests-common/tests/org/jetbrains/kotlin/codegen/ir/AbstractIrCheckLocalVariablesTableTest.kt b/compiler/tests-common/tests/org/jetbrains/kotlin/codegen/ir/AbstractIrCheckLocalVariablesTableTest.kt index fb991a98eb8..67f969dbcaa 100644 --- a/compiler/tests-common/tests/org/jetbrains/kotlin/codegen/ir/AbstractIrCheckLocalVariablesTableTest.kt +++ b/compiler/tests-common/tests/org/jetbrains/kotlin/codegen/ir/AbstractIrCheckLocalVariablesTableTest.kt @@ -11,6 +11,7 @@ import org.jetbrains.kotlin.config.CompilerConfiguration import org.jetbrains.kotlin.config.JVMConfigurationKeys import org.jetbrains.kotlin.test.ConfigurationKind import org.junit.ComparisonFailure +import java.io.File import java.nio.charset.Charset abstract class AbstractIrCheckLocalVariablesTableTest : AbstractCheckLocalVariablesTableTest() { @@ -23,9 +24,13 @@ abstract class AbstractIrCheckLocalVariablesTableTest : AbstractCheckLocalVariab return ConfigurationKind.ALL; } - override fun doCompare(text: String, actualLocalVariables: List) { + override fun doCompare( + testFile: File, + text: String, + actualLocalVariables: List + ) { val actual = getActualVariablesAsList(actualLocalVariables) - val expected = getExpectedVariablesAsList() + val expected = getExpectedVariablesAsList(testFile) if (!Comparing.equal(expected, actual)) { throw ComparisonFailure( "Variables differ from expected", @@ -41,8 +46,8 @@ abstract class AbstractIrCheckLocalVariablesTableTest : AbstractCheckLocalVariab .sorted() } - private fun getExpectedVariablesAsList(): List { - return ktFile.readLines(Charset.forName("utf-8")) + private fun getExpectedVariablesAsList(testFile: File): List { + return testFile.readLines(Charset.forName("utf-8")) .filter { line -> line.startsWith("// VARIABLE ") } .filter { !it.contains("NAME=\$i\$") } .map { line -> line.replaceFirst("INDEX=\\d+".toRegex(), "INDEX=*") } // Ignore index