diff --git a/compiler/testData/lineNumber/custom/smapInlineAsInlineArgument.kt b/compiler/testData/lineNumber/custom/smapInlineAsInlineArgument.kt index 2fa321bf0d4..ff109ed57d4 100644 --- a/compiler/testData/lineNumber/custom/smapInlineAsInlineArgument.kt +++ b/compiler/testData/lineNumber/custom/smapInlineAsInlineArgument.kt @@ -18,4 +18,4 @@ fun fail() : String { throw AssertionError("fail") } -//2 14 2 14 5 14 5 14 7 10 14 18 \ No newline at end of file +// 2 14 2 14 5 14 5 14 7 10 14 18 \ No newline at end of file diff --git a/compiler/tests/org/jetbrains/kotlin/codegen/AbstractLineNumberTest.java b/compiler/tests/org/jetbrains/kotlin/codegen/AbstractLineNumberTest.java index 010833a9412..dec19f4e624 100644 --- a/compiler/tests/org/jetbrains/kotlin/codegen/AbstractLineNumberTest.java +++ b/compiler/tests/org/jetbrains/kotlin/codegen/AbstractLineNumberTest.java @@ -20,7 +20,9 @@ import com.google.common.collect.Lists; import com.google.common.collect.Maps; import com.intellij.openapi.util.io.FileUtil; import com.intellij.openapi.util.text.StringUtil; +import kotlin.CollectionsKt; import kotlin.Pair; +import kotlin.jvm.functions.Function1; import org.jetbrains.annotations.NotNull; import org.jetbrains.kotlin.backend.common.output.OutputFile; import org.jetbrains.kotlin.backend.common.output.OutputFileCollection; @@ -100,21 +102,29 @@ public abstract class AbstractLineNumberTest extends TestCaseWithTmpdir { GenerationState state = GenerationUtils.compileFileGetGenerationStateForTest(psiFile, environment); - List expectedLineNumbers; - List actualLineNumbers; if (custom) { - expectedLineNumbers = extractCustomLineNumbersFromSource(psiFile); - actualLineNumbers = extractActualLineNumbersFromBytecode(state, false); - assertEquals(expectedLineNumbers, actualLineNumbers); + List actualLineNumbers = extractActualLineNumbersFromBytecode(state, false); + String text = psiFile.getText(); + String newFileText = text.substring(0, text.indexOf("// ")) + getActualLineNumbersAsString(actualLineNumbers); + KotlinTestUtils.assertEqualsToFile(new File(filename), newFileText); } else { - expectedLineNumbers = extractSelectedLineNumbersFromSource(psiFile); - actualLineNumbers = extractActualLineNumbersFromBytecode(state, true); + List expectedLineNumbers = extractSelectedLineNumbersFromSource(psiFile); + List actualLineNumbers = extractActualLineNumbersFromBytecode(state, true); assertSameElements(actualLineNumbers, expectedLineNumbers); } } + private static String getActualLineNumbersAsString(List list) { + return CollectionsKt.joinToString(list, " ", "// ", "", -1, "...", new Function1() { + @Override + public CharSequence invoke(Integer integer) { + return integer.toString(); + } + }); + } + @NotNull private static List extractActualLineNumbersFromBytecode(@NotNull GenerationState state, boolean testFunInvoke) { ClassFileFactory factory = state.getFactory(); @@ -142,24 +152,6 @@ public abstract class AbstractLineNumberTest extends TestCaseWithTmpdir { doTest(path, true); } - @NotNull - private static List extractCustomLineNumbersFromSource(@NotNull KtFile file) { - String fileContent = file.getText(); - List lineNumbers = Lists.newArrayList(); - String[] lines = StringUtil.convertLineSeparators(fileContent).split("\n"); - - for (String line : lines) { - if (line.startsWith("//")) { - String[] numbers = line.substring("//".length()).trim().split(" +"); - for (String number : numbers) { - lineNumbers.add(Integer.parseInt(number)); - } - } - } - - return lineNumbers; - } - @NotNull private static List extractSelectedLineNumbersFromSource(@NotNull KtFile file) { String fileContent = file.getText();