diff --git a/.idea/kotlinTestDataPluginTestDataPaths.xml b/.idea/kotlinTestDataPluginTestDataPaths.xml index ec3350c9ce4..e6e29769aca 100644 --- a/.idea/kotlinTestDataPluginTestDataPaths.xml +++ b/.idea/kotlinTestDataPluginTestDataPaths.xml @@ -28,7 +28,7 @@ - diff --git a/js/js.tests/test/org/jetbrains/kotlin/generators/tests/GenerateJsTests.kt b/js/js.tests/test/org/jetbrains/kotlin/generators/tests/GenerateJsTests.kt index 94ea5fab90f..a9f8816a7ba 100644 --- a/js/js.tests/test/org/jetbrains/kotlin/generators/tests/GenerateJsTests.kt +++ b/js/js.tests/test/org/jetbrains/kotlin/generators/tests/GenerateJsTests.kt @@ -117,6 +117,10 @@ fun main(args: Array) { testClass { model("typescript-export/", pattern = "^([^_](.+))\\.kt$") } + + testClass { + model("lineNumbers/") + } } testGroup("js/js.tests/tests-gen", "compiler/testData", testRunnerMethodName = "runTest0") { diff --git a/js/js.tests/test/org/jetbrains/kotlin/js/test/handlers/JsLineNumberHandler.kt b/js/js.tests/test/org/jetbrains/kotlin/js/test/handlers/JsLineNumberHandler.kt index ba4495fbd11..e29d07ef782 100644 --- a/js/js.tests/test/org/jetbrains/kotlin/js/test/handlers/JsLineNumberHandler.kt +++ b/js/js.tests/test/org/jetbrains/kotlin/js/test/handlers/JsLineNumberHandler.kt @@ -5,7 +5,10 @@ package org.jetbrains.kotlin.js.test.handlers +import org.jetbrains.kotlin.ir.backend.js.CompilationOutputs import org.jetbrains.kotlin.ir.backend.js.transformers.irToJs.TranslationMode +import org.jetbrains.kotlin.ir.backend.js.transformers.irToJs.safeModuleName +import org.jetbrains.kotlin.js.backend.ast.JsProgram import org.jetbrains.kotlin.js.facade.TranslationResult import org.jetbrains.kotlin.js.test.utils.LineCollector import org.jetbrains.kotlin.js.test.utils.LineOutputToStringVisitor @@ -16,50 +19,100 @@ import org.jetbrains.kotlin.test.model.TestModule import org.jetbrains.kotlin.test.services.TestServices import org.jetbrains.kotlin.test.services.assertions import org.jetbrains.kotlin.test.services.configuration.JsEnvironmentConfigurator +import org.jetbrains.kotlin.test.services.moduleStructure +import org.jetbrains.kotlin.utils.addToStdlib.cast import java.io.File +/** + * Verifies the `// LINE` comments in lineNumber tests. + * + * The test file is expected to contain the `// LINE(backend)` directive, followed by the line numbers that the corresponding JS statements + * are generated from. + * + * This handler traverses the JS AST and collects the actual line numbers using [LineCollector], and generates a JavaScript file + * with those line numbers printed as comments for ease of debugging these tests. + */ class JsLineNumberHandler(testServices: TestServices) : JsBinaryArtifactHandler(testServices) { - companion object { - private val LINES_PATTERN = Regex("^ *// *LINES: *(.*)$", RegexOption.MULTILINE) - } - - private val defaultTranslationMode = TranslationMode.PER_MODULE + private val translationModeForIr = TranslationMode.PER_MODULE override fun processAfterAllModules(someAssertionWasFailed: Boolean) {} override fun processModule(module: TestModule, info: BinaryArtifacts.Js) { - val translationResult = when (val artifact = info.unwrap()) { - is BinaryArtifacts.Js.OldJsArtifact -> artifact.translationResult as TranslationResult.Success - // TODO: Support JS IR -// is BinaryArtifacts.Js.JsIrArtifact -> artifact.compilerResult.outputs[defaultTranslationMode]!!.jsProgram!! + when (val artifact = info.unwrap()) { + is BinaryArtifacts.Js.OldJsArtifact -> + verifyModule(module, TranslationMode.FULL, artifact.translationResult.cast().program, "JS") + is BinaryArtifacts.Js.JsIrArtifact -> { + val testModules = testServices.moduleStructure.modules + val moduleId2TestModule = testModules.associateBy { it.name.safeModuleName } + + var verifiedModuleCount = 0 + + fun verifyModulesRecursively( + module: TestModule, + compilationOutputs: CompilationOutputs, + ) { + for ((moduleId, dependencyOutputs) in compilationOutputs.dependencies) { + moduleId2TestModule[moduleId]?.let { + verifyModulesRecursively(it, dependencyOutputs) + } + } + + verifyModule(module, translationModeForIr, compilationOutputs.jsProgram!!, "JS_IR") + verifiedModuleCount += 1 + } + + verifyModulesRecursively(module, artifact.compilerResult.outputs[translationModeForIr]!!) + + // Just a sanity check to make sure we indeed verify all the needed modules. + assert(verifiedModuleCount == testModules.size) { + "The number of verified modules ($verifiedModuleCount) must match " + + "the number of all the test modules (${testModules.size})" + } + } else -> error("This artifact is not supported") } + } - val jsProgram = translationResult.program - - val baseOutputPath = JsEnvironmentConfigurator.getJsModuleArtifactPath(testServices, module.name, defaultTranslationMode) + private fun verifyModule( + module: TestModule, + translationMode: TranslationMode, + jsProgram: JsProgram, + backendPattern: String + ) { + val baseOutputPath = JsEnvironmentConfigurator.getJsModuleArtifactPath(testServices, module.name, translationMode) val lineCollector = LineCollector() lineCollector.accept(jsProgram) - val programOutput = TextOutputImpl() - jsProgram.globalBlock.accept(LineOutputToStringVisitor(programOutput, lineCollector)) - val generatedCode = programOutput.toString() + val generatedCode = kotlin.run { + val programOutput = TextOutputImpl() + jsProgram.globalBlock.accept(LineOutputToStringVisitor(programOutput, lineCollector)) + programOutput.toString() + } with(File("$baseOutputPath-lines.js")) { parentFile.mkdirs() writeText(generatedCode) } - val linesMatcher = module.files - .firstNotNullOfOrNull { LINES_PATTERN.find(it.originalContent) } - ?: error("'// LINES: ' comment was not found in source file. Generated code is:\n$generatedCode") + val linesPattern = Regex("^ *// *LINES\\($backendPattern\\): *(.*)$", RegexOption.MULTILINE) + + val linesMatcher = module.files + .firstNotNullOfOrNull { linesPattern.find(it.originalContent) } + ?: testServices.assertions.fail { + "'// LINES($backendPattern): ' comment was not found in source file. Generated code is:\n$generatedCode" + } + + fun List.render() = joinToString(" ") { it?.toString() ?: "*" } + + val expectedLines = + linesMatcher.groups[1]!!.value.split(Regex("\\s+")).map { if (it == "*") null else it.toInt() }.render() - val expectedLines = linesMatcher.groups[1]!!.value val actualLines = lineCollector.lines .dropLastWhile { it == null } - .joinToString(" ") { if (it == null) "*" else (it + 1).toString() } + .map { lineNumber -> lineNumber?.let { it + 1 } } + .render() testServices.assertions.assertEquals(expectedLines, actualLines) { generatedCode } } diff --git a/js/js.tests/test/org/jetbrains/kotlin/js/test/ir/AbstractJsIrTest.kt b/js/js.tests/test/org/jetbrains/kotlin/js/test/ir/AbstractJsIrTest.kt index 945d0822b7a..f0ec9491027 100644 --- a/js/js.tests/test/org/jetbrains/kotlin/js/test/ir/AbstractJsIrTest.kt +++ b/js/js.tests/test/org/jetbrains/kotlin/js/test/ir/AbstractJsIrTest.kt @@ -110,6 +110,26 @@ open class AbstractIrJsTypeScriptExportTest : AbstractJsIrTest( } } +open class AbstractJsIrLineNumberTest : AbstractJsIrTest( + pathToTestDir = "${JsEnvironmentConfigurator.TEST_DATA_DIR_PATH}/lineNumbers/", + testGroupOutputDirPrefix = "irLineNumbers/" +) { + override fun configure(builder: TestConfigurationBuilder) { + super.configure(builder) + with(builder) { + defaultDirectives { + +JsEnvironmentConfigurationDirectives.KJS_WITH_FULL_RUNTIME + +JsEnvironmentConfigurationDirectives.NO_COMMON_FILES + -JsEnvironmentConfigurationDirectives.GENERATE_NODE_JS_RUNNER + JsEnvironmentConfigurationDirectives.DONT_RUN_GENERATED_CODE.with(listOf("JS", "JS_IR", "JS_IR_ES6")) + } + configureJsArtifactsHandlersStep { + useHandlers(::JsLineNumberHandler) + } + } + } +} + open class AbstractIrCodegenWasmJsInteropJsTest : AbstractJsIrTest( pathToTestDir = "compiler/testData/codegen/wasmJsInterop", testGroupOutputDirPrefix = "codegen/wasmJsInteropJs" diff --git a/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/ir/JsIrLineNumberTestGenerated.java b/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/ir/JsIrLineNumberTestGenerated.java new file mode 100644 index 00000000000..063d4a8e4e9 --- /dev/null +++ b/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/ir/JsIrLineNumberTestGenerated.java @@ -0,0 +1,343 @@ +/* + * Copyright 2010-2021 JetBrains s.r.o. and Kotlin Programming Language contributors. + * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file. + */ + +package org.jetbrains.kotlin.js.test.ir; + +import com.intellij.testFramework.TestDataPath; +import org.jetbrains.kotlin.test.util.KtTestUtil; +import org.jetbrains.kotlin.test.TargetBackend; +import org.jetbrains.kotlin.test.TestMetadata; +import org.junit.jupiter.api.Nested; +import org.junit.jupiter.api.Test; + +import java.io.File; +import java.util.regex.Pattern; + +/** This class is generated by {@link GenerateNewCompilerTests.kt}. DO NOT MODIFY MANUALLY */ +@SuppressWarnings("all") +@TestMetadata("js/js.translator/testData/lineNumbers") +@TestDataPath("$PROJECT_ROOT") +public class JsIrLineNumberTestGenerated extends AbstractJsIrLineNumberTest { + @Test + public void testAllFilesPresentInLineNumbers() throws Exception { + KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("js/js.translator/testData/lineNumbers"), Pattern.compile("^(.+)\\.kt$"), null, TargetBackend.JS_IR, true); + } + + @Test + @TestMetadata("andAndWithSideEffect.kt") + public void testAndAndWithSideEffect() throws Exception { + runTest("js/js.translator/testData/lineNumbers/andAndWithSideEffect.kt"); + } + + @Test + @TestMetadata("backingField.kt") + public void testBackingField() throws Exception { + runTest("js/js.translator/testData/lineNumbers/backingField.kt"); + } + + @Test + @TestMetadata("catch.kt") + public void testCatch() throws Exception { + runTest("js/js.translator/testData/lineNumbers/catch.kt"); + } + + @Test + @TestMetadata("chainedCall.kt") + public void testChainedCall() throws Exception { + runTest("js/js.translator/testData/lineNumbers/chainedCall.kt"); + } + + @Test + @TestMetadata("classCapturingLocals.kt") + public void testClassCapturingLocals() throws Exception { + runTest("js/js.translator/testData/lineNumbers/classCapturingLocals.kt"); + } + + @Test + @TestMetadata("closure.kt") + public void testClosure() throws Exception { + runTest("js/js.translator/testData/lineNumbers/closure.kt"); + } + + @Test + @TestMetadata("complexExpressionAsDefaultArgument.kt") + public void testComplexExpressionAsDefaultArgument() throws Exception { + runTest("js/js.translator/testData/lineNumbers/complexExpressionAsDefaultArgument.kt"); + } + + @Test + @TestMetadata("conditionalDecomposed.kt") + public void testConditionalDecomposed() throws Exception { + runTest("js/js.translator/testData/lineNumbers/conditionalDecomposed.kt"); + } + + @Test + @TestMetadata("coroutine.kt") + public void testCoroutine() throws Exception { + runTest("js/js.translator/testData/lineNumbers/coroutine.kt"); + } + + @Test + @TestMetadata("coroutineNullAssertion.kt") + public void testCoroutineNullAssertion() throws Exception { + runTest("js/js.translator/testData/lineNumbers/coroutineNullAssertion.kt"); + } + + @Test + @TestMetadata("dataClass.kt") + public void testDataClass() throws Exception { + runTest("js/js.translator/testData/lineNumbers/dataClass.kt"); + } + + @Test + @TestMetadata("delegateMemberVal.kt") + public void testDelegateMemberVal() throws Exception { + runTest("js/js.translator/testData/lineNumbers/delegateMemberVal.kt"); + } + + @Test + @TestMetadata("delegatedProperty.kt") + public void testDelegatedProperty() throws Exception { + runTest("js/js.translator/testData/lineNumbers/delegatedProperty.kt"); + } + + @Test + @TestMetadata("delegation.kt") + public void testDelegation() throws Exception { + runTest("js/js.translator/testData/lineNumbers/delegation.kt"); + } + + @Test + @TestMetadata("destructuring.kt") + public void testDestructuring() throws Exception { + runTest("js/js.translator/testData/lineNumbers/destructuring.kt"); + } + + @Test + @TestMetadata("destructuringInline.kt") + public void testDestructuringInline() throws Exception { + runTest("js/js.translator/testData/lineNumbers/destructuringInline.kt"); + } + + @Test + @TestMetadata("doWhileWithComplexCondition.kt") + public void testDoWhileWithComplexCondition() throws Exception { + runTest("js/js.translator/testData/lineNumbers/doWhileWithComplexCondition.kt"); + } + + @Test + @TestMetadata("elvis.kt") + public void testElvis() throws Exception { + runTest("js/js.translator/testData/lineNumbers/elvis.kt"); + } + + @Test + @TestMetadata("enumCompanionObject.kt") + public void testEnumCompanionObject() throws Exception { + runTest("js/js.translator/testData/lineNumbers/enumCompanionObject.kt"); + } + + @Test + @TestMetadata("enumObject.kt") + public void testEnumObject() throws Exception { + runTest("js/js.translator/testData/lineNumbers/enumObject.kt"); + } + + @Test + @TestMetadata("expressionAsFunctionBody.kt") + public void testExpressionAsFunctionBody() throws Exception { + runTest("js/js.translator/testData/lineNumbers/expressionAsFunctionBody.kt"); + } + + @Test + @TestMetadata("for.kt") + public void testFor() throws Exception { + runTest("js/js.translator/testData/lineNumbers/for.kt"); + } + + @Test + @TestMetadata("increment.kt") + public void testIncrement() throws Exception { + runTest("js/js.translator/testData/lineNumbers/increment.kt"); + } + + @Test + @TestMetadata("inlineArguments.kt") + public void testInlineArguments() throws Exception { + runTest("js/js.translator/testData/lineNumbers/inlineArguments.kt"); + } + + @Test + @TestMetadata("inlineLocalVarsRef.kt") + public void testInlineLocalVarsRef() throws Exception { + runTest("js/js.translator/testData/lineNumbers/inlineLocalVarsRef.kt"); + } + + @Test + @TestMetadata("inlineReturn.kt") + public void testInlineReturn() throws Exception { + runTest("js/js.translator/testData/lineNumbers/inlineReturn.kt"); + } + + @Test + @TestMetadata("inlining.kt") + public void testInlining() throws Exception { + runTest("js/js.translator/testData/lineNumbers/inlining.kt"); + } + + @Test + @TestMetadata("inliningWithLambda.kt") + public void testInliningWithLambda() throws Exception { + runTest("js/js.translator/testData/lineNumbers/inliningWithLambda.kt"); + } + + @Test + @TestMetadata("innerClass.kt") + public void testInnerClass() throws Exception { + runTest("js/js.translator/testData/lineNumbers/innerClass.kt"); + } + + @Test + @TestMetadata("isOperator.kt") + public void testIsOperator() throws Exception { + runTest("js/js.translator/testData/lineNumbers/isOperator.kt"); + } + + @Test + @TestMetadata("jsCode.kt") + public void testJsCode() throws Exception { + runTest("js/js.translator/testData/lineNumbers/jsCode.kt"); + } + + @Test + @TestMetadata("lambdaWithClosure.kt") + public void testLambdaWithClosure() throws Exception { + runTest("js/js.translator/testData/lineNumbers/lambdaWithClosure.kt"); + } + + @Test + @TestMetadata("lastExpressionInInlineLambda.kt") + public void testLastExpressionInInlineLambda() throws Exception { + runTest("js/js.translator/testData/lineNumbers/lastExpressionInInlineLambda.kt"); + } + + @Test + @TestMetadata("literals.kt") + public void testLiterals() throws Exception { + runTest("js/js.translator/testData/lineNumbers/literals.kt"); + } + + @Test + @TestMetadata("longLiteral.kt") + public void testLongLiteral() throws Exception { + runTest("js/js.translator/testData/lineNumbers/longLiteral.kt"); + } + + @Test + @TestMetadata("memberFunWithDefaultParam.kt") + public void testMemberFunWithDefaultParam() throws Exception { + runTest("js/js.translator/testData/lineNumbers/memberFunWithDefaultParam.kt"); + } + + @Test + @TestMetadata("multipleReferences.kt") + public void testMultipleReferences() throws Exception { + runTest("js/js.translator/testData/lineNumbers/multipleReferences.kt"); + } + + @Test + @TestMetadata("objectInstanceFunction.kt") + public void testObjectInstanceFunction() throws Exception { + runTest("js/js.translator/testData/lineNumbers/objectInstanceFunction.kt"); + } + + @Test + @TestMetadata("optionalArgs.kt") + public void testOptionalArgs() throws Exception { + runTest("js/js.translator/testData/lineNumbers/optionalArgs.kt"); + } + + @Test + @TestMetadata("propertyWithoutInitializer.kt") + public void testPropertyWithoutInitializer() throws Exception { + runTest("js/js.translator/testData/lineNumbers/propertyWithoutInitializer.kt"); + } + + @Test + @TestMetadata("simple.kt") + public void testSimple() throws Exception { + runTest("js/js.translator/testData/lineNumbers/simple.kt"); + } + + @Test + @TestMetadata("stringLiteral.kt") + public void testStringLiteral() throws Exception { + runTest("js/js.translator/testData/lineNumbers/stringLiteral.kt"); + } + + @Test + @TestMetadata("syntheticCodeInConstructors.kt") + public void testSyntheticCodeInConstructors() throws Exception { + runTest("js/js.translator/testData/lineNumbers/syntheticCodeInConstructors.kt"); + } + + @Test + @TestMetadata("syntheticCodeInEnums.kt") + public void testSyntheticCodeInEnums() throws Exception { + runTest("js/js.translator/testData/lineNumbers/syntheticCodeInEnums.kt"); + } + + @Test + @TestMetadata("valParameter.kt") + public void testValParameter() throws Exception { + runTest("js/js.translator/testData/lineNumbers/valParameter.kt"); + } + + @Test + @TestMetadata("whenEntryWithMultipleConditions.kt") + public void testWhenEntryWithMultipleConditions() throws Exception { + runTest("js/js.translator/testData/lineNumbers/whenEntryWithMultipleConditions.kt"); + } + + @Test + @TestMetadata("whenEntryWithMultipleConditionsNonOptimized.kt") + public void testWhenEntryWithMultipleConditionsNonOptimized() throws Exception { + runTest("js/js.translator/testData/lineNumbers/whenEntryWithMultipleConditionsNonOptimized.kt"); + } + + @Test + @TestMetadata("whenIn.kt") + public void testWhenIn() throws Exception { + runTest("js/js.translator/testData/lineNumbers/whenIn.kt"); + } + + @Test + @TestMetadata("whenIs.kt") + public void testWhenIs() throws Exception { + runTest("js/js.translator/testData/lineNumbers/whenIs.kt"); + } + + @Test + @TestMetadata("whileWithComplexCondition.kt") + public void testWhileWithComplexCondition() throws Exception { + runTest("js/js.translator/testData/lineNumbers/whileWithComplexCondition.kt"); + } + + @Nested + @TestMetadata("js/js.translator/testData/lineNumbers/inlineMultiModule") + @TestDataPath("$PROJECT_ROOT") + public class InlineMultiModule { + @Test + public void testAllFilesPresentInInlineMultiModule() throws Exception { + KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("js/js.translator/testData/lineNumbers/inlineMultiModule"), Pattern.compile("^(.+)\\.kt$"), null, TargetBackend.JS_IR, true); + } + + @Test + @TestMetadata("simple.kt") + public void testSimple() throws Exception { + runTest("js/js.translator/testData/lineNumbers/inlineMultiModule/simple.kt"); + } + } +} diff --git a/js/js.translator/testData/lineNumbers/andAndWithSideEffect.kt b/js/js.translator/testData/lineNumbers/andAndWithSideEffect.kt index d7a2c164218..b318a91a095 100644 --- a/js/js.translator/testData/lineNumbers/andAndWithSideEffect.kt +++ b/js/js.translator/testData/lineNumbers/andAndWithSideEffect.kt @@ -6,4 +6,5 @@ fun box(x: Int, y: Int) { fun foo(x: Int) = x -// LINES: 1 5 3 3 4 3 3 3 3 * 3 3 4 4 4 4 * 4 4 4 4 2 3 7 7 7 \ No newline at end of file +// LINES(JS): 1 5 3 3 4 3 3 3 3 * 3 3 4 4 4 4 * 4 4 4 4 2 3 7 7 7 +// LINES(JS_IR): 3 3 3 * 3 * 4 4 4 * 4 4 2 * 7 7 diff --git a/js/js.translator/testData/lineNumbers/backingField.kt b/js/js.translator/testData/lineNumbers/backingField.kt index 87b540fa424..f36bacf2f50 100644 --- a/js/js.translator/testData/lineNumbers/backingField.kt +++ b/js/js.translator/testData/lineNumbers/backingField.kt @@ -12,4 +12,5 @@ open class A { } } -// LINES: 1 2 2 4 4 2 2 2 2 5 5 5 6 7 12 8 9 10 11 \ No newline at end of file +// LINES(JS): 1 2 2 4 4 2 2 2 2 5 5 5 6 7 12 8 9 10 11 +// LINES(JS_IR): 2 2 4 4 * 2 2 * 2 2 * 8 9 10 10 11 * 6 6 5 6 diff --git a/js/js.translator/testData/lineNumbers/catch.kt b/js/js.translator/testData/lineNumbers/catch.kt index 90572e29d9a..1fc28758d6c 100644 --- a/js/js.translator/testData/lineNumbers/catch.kt +++ b/js/js.translator/testData/lineNumbers/catch.kt @@ -19,4 +19,5 @@ fun bar() { } } -// LINES: 1 11 3 3 5 5 6 6 8 8 9 9 2 2 * 13 20 15 15 18 18 \ No newline at end of file +// LINES(JS): 1 11 3 3 5 5 6 6 8 8 9 9 2 2 * 13 20 15 15 18 18 +// LINES(JS_IR): 3 3 * 6 6 * 9 9 * 15 15 18 18 diff --git a/js/js.translator/testData/lineNumbers/chainedCall.kt b/js/js.translator/testData/lineNumbers/chainedCall.kt index 03bdea5a8a0..c821fa142eb 100644 --- a/js/js.translator/testData/lineNumbers/chainedCall.kt +++ b/js/js.translator/testData/lineNumbers/chainedCall.kt @@ -14,4 +14,5 @@ class C { val baz: dynamic get() = null } -// LINES: 1 9 2 4 3 2 6 8 7 6 11 12 12 12 14 14 14 \ No newline at end of file +// LINES(JS): 1 9 2 4 3 2 6 8 7 6 11 12 12 12 14 14 14 +// LINES(JS_IR): 2 4 3 2 6 8 7 6 * 12 12 * 14 14 diff --git a/js/js.translator/testData/lineNumbers/classCapturingLocals.kt b/js/js.translator/testData/lineNumbers/classCapturingLocals.kt index 79a816e78ee..619205ff5b5 100644 --- a/js/js.translator/testData/lineNumbers/classCapturingLocals.kt +++ b/js/js.translator/testData/lineNumbers/classCapturingLocals.kt @@ -14,4 +14,5 @@ fun A.foo() { fun baz() = 23 -// LINES: 1 * 5 5 5 6 9 7 7 8 8 * 3 13 4 4 11 11 12 12 15 15 15 \ No newline at end of file +// LINES(JS): 1 * 5 5 5 6 9 7 7 8 8 * 3 13 4 4 11 11 12 12 15 15 15 +// LINES(JS_IR): 4 4 11 11 12 12 * 15 15 * 7 7 8 8 diff --git a/js/js.translator/testData/lineNumbers/closure.kt b/js/js.translator/testData/lineNumbers/closure.kt index d3c2c2483d7..eb4efea0c8d 100644 --- a/js/js.translator/testData/lineNumbers/closure.kt +++ b/js/js.translator/testData/lineNumbers/closure.kt @@ -5,4 +5,5 @@ fun box(x: Int, y: Int): Int { return foo(y) } -// LINES: 2 2 2 4 4 1 6 2 2 5 5 \ No newline at end of file +// LINES(JS): 2 2 2 4 4 1 6 2 2 5 5 +// LINES(JS_IR): 5 5 * 4 4 diff --git a/js/js.translator/testData/lineNumbers/complexExpressionAsDefaultArgument.kt b/js/js.translator/testData/lineNumbers/complexExpressionAsDefaultArgument.kt index 5b55937e03c..d00283717c1 100644 --- a/js/js.translator/testData/lineNumbers/complexExpressionAsDefaultArgument.kt +++ b/js/js.translator/testData/lineNumbers/complexExpressionAsDefaultArgument.kt @@ -11,4 +11,5 @@ fun baz() = 1 fun bar() = 2 -// LINES: 1 3 3 2 2 4 3 4 4 4 5 5 2 8 8 10 10 10 12 12 12 \ No newline at end of file +// LINES(JS): 1 3 3 2 2 4 3 4 4 4 5 5 2 8 8 10 10 10 12 12 12 +// LINES(JS_IR): 8 8 * 1 3 3 1 4 5 1 1 * 10 10 * 12 12 diff --git a/js/js.translator/testData/lineNumbers/conditionalDecomposed.kt b/js/js.translator/testData/lineNumbers/conditionalDecomposed.kt index 3f290e5a7ac..5f033bd6631 100644 --- a/js/js.translator/testData/lineNumbers/conditionalDecomposed.kt +++ b/js/js.translator/testData/lineNumbers/conditionalDecomposed.kt @@ -14,4 +14,5 @@ private inline fun foo(): Int { return 23 } -// LINES: 1 10 3 3 3 4 3 6 13 13 3 14 2 12 15 13 13 14 14 \ No newline at end of file +// LINES(JS): 1 10 3 3 3 4 3 6 13 13 3 14 2 12 15 13 13 14 14 +// LINES(JS_IR): 4 6 * 13 13 14 14 8 2 * 13 13 14 14 diff --git a/js/js.translator/testData/lineNumbers/coroutine.kt b/js/js.translator/testData/lineNumbers/coroutine.kt index 3f362470bac..4e54b9f27a1 100644 --- a/js/js.translator/testData/lineNumbers/coroutine.kt +++ b/js/js.translator/testData/lineNumbers/coroutine.kt @@ -14,4 +14,5 @@ suspend fun bar(): Unit { println(a + b) } -// LINES: 39 4 4 4 7 5 5 45 45 5 93 45 5 5 6 4 4 4 9 15 9 9 9 * 9 15 10 10 11 11 11 11 11 * 11 12 12 13 13 13 13 13 13 13 14 14 * 9 15 9 9 9 9 \ No newline at end of file +// LINES(JS): 39 4 4 4 7 5 5 45 45 5 93 45 5 5 6 4 4 4 9 15 9 9 9 * 9 15 10 10 11 11 11 11 11 * 11 12 12 13 13 13 13 13 13 13 14 14 * 9 15 9 9 9 9 +// LINES(JS_IR): 19 19 * 50 50 93 93 3 45 45 3 45 6 6 19 * 9 9 9 9 9 9 9 9 * 9 9 * 10 10 * 11 * 11 12 12 * 13 * 13 13 14 14 diff --git a/js/js.translator/testData/lineNumbers/coroutineNullAssertion.kt b/js/js.translator/testData/lineNumbers/coroutineNullAssertion.kt index 878058ba895..b3137943df0 100644 --- a/js/js.translator/testData/lineNumbers/coroutineNullAssertion.kt +++ b/js/js.translator/testData/lineNumbers/coroutineNullAssertion.kt @@ -8,4 +8,5 @@ suspend fun foo() { suspend fun delay() { } -// LINES: 1 6 1 1 * 1 6 2 2 2 2 2 * 3 3 4 4 4 4 4 5 5 * 1 6 1 1 1 1 8 9 \ No newline at end of file +// LINES(JS): 1 6 1 1 * 1 6 2 2 2 2 2 * 3 3 4 4 4 4 4 5 5 * 1 6 1 1 1 1 8 9 +// LINES(JS_IR): 1 1 1 1 1 1 1 1 * 1 1 * 2 * 3 3 3 * 5 5 diff --git a/js/js.translator/testData/lineNumbers/dataClass.kt b/js/js.translator/testData/lineNumbers/dataClass.kt index 910c6a6d9b2..5664598c477 100644 --- a/js/js.translator/testData/lineNumbers/dataClass.kt +++ b/js/js.translator/testData/lineNumbers/dataClass.kt @@ -3,4 +3,7 @@ data class A( val y: String ) -// LINES: 1 2 3 * 1 2 2 1 3 3 1 1 1 2 3 1 1 1 2 3 1 1 1 2 3 1 1 1 1 1 2 3 \ No newline at end of file +// LINES(JS): 1 2 3 * 1 2 2 1 3 3 1 1 1 2 3 1 1 1 2 3 1 1 1 2 3 1 1 1 1 1 2 3 + +// FIXME: componentN function body should point to the corresponding property. +// LINES(JS_IR): 2 2 3 3 * 2 2 * 3 3 * 1 1 * 1 1 * 1 1 * 1 1 1 1 1 1 1 1 * 1 1 * 1 1 1 1 1 1 * 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 diff --git a/js/js.translator/testData/lineNumbers/delegateMemberVal.kt b/js/js.translator/testData/lineNumbers/delegateMemberVal.kt index d7f630faa47..05c78113bc0 100644 --- a/js/js.translator/testData/lineNumbers/delegateMemberVal.kt +++ b/js/js.translator/testData/lineNumbers/delegateMemberVal.kt @@ -13,4 +13,5 @@ class Delegate(val f: () -> Int) { } } -// LINES: 1 2 3 * 2 2 3 3 3 3 * 6 8 7 7 10 10 11 13 12 12 +// LINES(JS): 1 2 3 * 2 2 3 3 3 3 * 6 8 7 7 10 10 11 13 12 12 +// LINES(JS_IR): 3 3 * 3 3 3 * 3 3 2 1 2 * 7 7 * 10 10 * 10 10 * 12 12 * 2 diff --git a/js/js.translator/testData/lineNumbers/delegatedProperty.kt b/js/js.translator/testData/lineNumbers/delegatedProperty.kt index 7f68f7107ec..65d9538ba7c 100644 --- a/js/js.translator/testData/lineNumbers/delegatedProperty.kt +++ b/js/js.translator/testData/lineNumbers/delegatedProperty.kt @@ -15,4 +15,5 @@ class B { } } -// LINES: 3 4 5 * 4 4 4 * 8 9 11 10 10 13 15 14 14 \ No newline at end of file +// LINES(JS): 3 4 5 * 4 4 4 * 8 9 11 10 10 13 15 14 14 +// LINES(JS_IR): 5 5 * 5 5 4 1 4 5 * 5 5 4 1 4 * 10 10 * 14 14 * 4 * 4 diff --git a/js/js.translator/testData/lineNumbers/delegation.kt b/js/js.translator/testData/lineNumbers/delegation.kt index 028768742d4..868bd26990f 100644 --- a/js/js.translator/testData/lineNumbers/delegation.kt +++ b/js/js.translator/testData/lineNumbers/delegation.kt @@ -18,4 +18,5 @@ val o = object : I { } } -// LINES: 1 2 3 2 2 2 2 2 2 2 * 11 12 12 12 15 15 15 16 18 17 17 \ No newline at end of file +// LINES(JS): 1 2 3 2 2 2 2 2 2 2 * 11 12 12 12 15 15 15 16 18 17 17 +// LINES(JS_IR): 11 11 * 3 3 * 1 1 * 1 1 * 1 1 * 12 12 * 17 17 * 15 15 * 11 diff --git a/js/js.translator/testData/lineNumbers/destructuring.kt b/js/js.translator/testData/lineNumbers/destructuring.kt index 9a4762426b3..8e35064ea92 100644 --- a/js/js.translator/testData/lineNumbers/destructuring.kt +++ b/js/js.translator/testData/lineNumbers/destructuring.kt @@ -27,4 +27,5 @@ fun bar(f: (Pair) -> Unit) { } -// LINES: 15 22 16 16 17 18 20 20 21 21 22 22 3 23 9 9 9 9 4 9 9 9 5 5 6 7 11 11 12 12 15 15 25 27 26 26 * 1 * 1 \ No newline at end of file +// LINES(JS): 15 22 16 16 17 18 20 20 21 21 22 22 3 23 9 9 9 9 4 9 9 9 5 5 6 7 11 11 12 12 15 15 25 27 26 26 * 1 * 1 +// LINES(JS_IR): 1 1 * 1 1 * 9 9 9 9 9 6 6 9 7 7 9 11 11 12 12 15 15 * 26 26 * 17 17 16 18 18 16 20 20 21 21 * 1 diff --git a/js/js.translator/testData/lineNumbers/destructuringInline.kt b/js/js.translator/testData/lineNumbers/destructuringInline.kt index fbfa4dac469..93cf1e8760d 100644 --- a/js/js.translator/testData/lineNumbers/destructuringInline.kt +++ b/js/js.translator/testData/lineNumbers/destructuringInline.kt @@ -32,4 +32,5 @@ inline operator fun P.component1() = a inline operator fun P.component2() = b -// LINES: 15 22 17 17 31 18 18 33 20 20 21 21 22 22 3 23 9 9 9 9 4 9 9 9 6 6 31 7 7 33 11 11 12 12 15 15 25 27 26 26 29 29 29 * 31 31 31 33 33 33 * 1 * 1 \ No newline at end of file +// LINES(JS): 15 22 17 17 31 18 18 33 20 20 21 21 22 22 3 23 9 9 9 9 4 9 9 9 6 6 31 7 7 33 11 11 12 12 15 15 25 27 26 26 29 29 29 * 31 31 31 33 33 33 * 1 * 1 +// LINES(JS_IR): 1 1 * 1 1 * 9 9 9 9 9 * 31 31 9 6 6 * 33 33 9 7 7 11 11 12 12 15 15 * 26 26 * 29 29 29 29 * 29 29 * 29 29 * 31 31 * 33 33 * 31 31 16 17 17 * 33 33 16 18 18 20 20 21 21 * 1 diff --git a/js/js.translator/testData/lineNumbers/doWhileWithComplexCondition.kt b/js/js.translator/testData/lineNumbers/doWhileWithComplexCondition.kt index 3011ad76091..890988be6d9 100644 --- a/js/js.translator/testData/lineNumbers/doWhileWithComplexCondition.kt +++ b/js/js.translator/testData/lineNumbers/doWhileWithComplexCondition.kt @@ -13,4 +13,5 @@ fun box() { ) } -// LINES: 1 14 8 8 7 3 2 2 3 3 3 8 8 11 11 * 3 7 12 3 3 4 4 \ No newline at end of file +// LINES(JS): 1 14 8 8 7 3 2 2 3 3 3 8 8 11 11 * 3 7 12 3 3 4 4 +// LINES(JS_IR): 2 2 4 4 * 8 8 8 8 8 11 11 * 7 12 diff --git a/js/js.translator/testData/lineNumbers/elvis.kt b/js/js.translator/testData/lineNumbers/elvis.kt index f46606369c0..169c47818ae 100644 --- a/js/js.translator/testData/lineNumbers/elvis.kt +++ b/js/js.translator/testData/lineNumbers/elvis.kt @@ -9,4 +9,5 @@ fun box(x: String?) { fun foo() = "bar" -// LINES: 3 8 7 7 4 4 4 5 5 7 7 7 7 * 5 4 5 10 10 10 * 1 * 1 \ No newline at end of file +// LINES(JS): 3 8 7 7 4 4 4 5 5 7 7 7 7 * 5 4 5 10 10 10 * 1 * 1 +// LINES(JS_IR): 1 1 * 1 1 * 4 5 5 * 5 * 7 7 7 * 5 4 4 * 10 10 * 1 diff --git a/js/js.translator/testData/lineNumbers/enumCompanionObject.kt b/js/js.translator/testData/lineNumbers/enumCompanionObject.kt index f9da28d2399..1c60eeadfc8 100644 --- a/js/js.translator/testData/lineNumbers/enumCompanionObject.kt +++ b/js/js.translator/testData/lineNumbers/enumCompanionObject.kt @@ -6,4 +6,5 @@ enum class Foo { } } -// LINES: 1 1 1 1 1 1 1 1 1 2 2 4 * 2 2 2 2 4 4 5 5 * 4 4 4 4 4 4 4 * 1 1 1 * 1 1 1 1 1 1 \ No newline at end of file +// LINES(JS): 1 1 1 1 1 1 1 1 1 2 2 4 * 2 2 2 2 4 4 5 5 * 4 4 4 4 4 4 4 * 1 1 1 * 1 1 1 1 1 1 +// LINES(JS_IR): 5 5 * 5 5 diff --git a/js/js.translator/testData/lineNumbers/enumObject.kt b/js/js.translator/testData/lineNumbers/enumObject.kt index 6cc6f89c533..f7f19bab519 100644 --- a/js/js.translator/testData/lineNumbers/enumObject.kt +++ b/js/js.translator/testData/lineNumbers/enumObject.kt @@ -10,4 +10,5 @@ enum class E { } } -// LINES: 1 1 1 1 1 1 1 1 1 2 2 4 8 * 2 2 2 2 4 4 4 5 5 5 * 4 4 4 4 8 8 8 9 9 9 * 8 8 8 8 * 1 1 1 * 1 1 1 1 1 1 1 1 1 1 \ No newline at end of file +// LINES(JS): 1 1 1 1 1 1 1 1 1 2 2 4 8 * 2 2 2 2 4 4 4 5 5 5 * 4 4 4 4 8 8 8 9 9 9 * 8 8 8 8 * 1 1 1 * 1 1 1 1 1 1 1 1 1 1 +// LINES(JS_IR): 5 5 * 9 9 diff --git a/js/js.translator/testData/lineNumbers/expressionAsFunctionBody.kt b/js/js.translator/testData/lineNumbers/expressionAsFunctionBody.kt index 02bb593112f..ff7508da6a4 100644 --- a/js/js.translator/testData/lineNumbers/expressionAsFunctionBody.kt +++ b/js/js.translator/testData/lineNumbers/expressionAsFunctionBody.kt @@ -4,4 +4,5 @@ fun box() = fun foo() = 23 -// LINES: 1 2 2 4 5 5 \ No newline at end of file +// LINES(JS): 1 2 2 4 5 5 +// LINES(JS_IR): 2 2 * 5 5 diff --git a/js/js.translator/testData/lineNumbers/for.kt b/js/js.translator/testData/lineNumbers/for.kt index 0ddc03ee7a3..bc38144d456 100644 --- a/js/js.translator/testData/lineNumbers/for.kt +++ b/js/js.translator/testData/lineNumbers/for.kt @@ -17,4 +17,5 @@ fun box() { } } -// LINES: 1 18 2 2 10 2 2 2 2 2 2 3 3 6 6 6 6 7 7 10 10 10 10 10 10 11 11 14 14 15 15 15 15 16 16 \ No newline at end of file +// LINES(JS): 1 18 2 2 10 2 2 2 2 2 2 3 3 6 6 6 6 7 7 10 10 10 10 10 10 11 11 14 14 15 15 15 15 16 16 +// LINES(JS_IR): 12 2 18 18 35 35 2 2 2 2 2 2 2 2 2 2 2 3 3 6 6 6 6 6 6 6 7 7 6 10 10 10 10 10 11 11 14 14 15 15 15 15 15 15 15 15 15 16 16 15 diff --git a/js/js.translator/testData/lineNumbers/increment.kt b/js/js.translator/testData/lineNumbers/increment.kt index 152426ab05c..70710f5c143 100644 --- a/js/js.translator/testData/lineNumbers/increment.kt +++ b/js/js.translator/testData/lineNumbers/increment.kt @@ -8,4 +8,5 @@ fun foo(x: Int) { println(y) } -// LINES: 1 9 2 2 3 3 4 4 5 5 6 6 7 7 8 8 \ No newline at end of file +// LINES(JS): 1 9 2 2 3 3 4 4 5 5 6 6 7 7 8 8 +// LINES(JS_IR): 2 2 3 3 3 3 4 4 5 5 6 6 7 7 8 8 diff --git a/js/js.translator/testData/lineNumbers/inlineArguments.kt b/js/js.translator/testData/lineNumbers/inlineArguments.kt index 347a1a39a9b..9ec83ee591c 100644 --- a/js/js.translator/testData/lineNumbers/inlineArguments.kt +++ b/js/js.translator/testData/lineNumbers/inlineArguments.kt @@ -11,4 +11,5 @@ inline fun foo(x: Int) { fun bar() = 23 -// LINES: 3 5 4 4 8 8 9 9 7 10 8 8 9 9 12 12 12 * 1 * 1 \ No newline at end of file +// LINES(JS): 3 5 4 4 8 8 9 9 7 10 8 8 9 9 12 12 12 * 1 * 1 +// LINES(JS_IR): 1 1 * 1 1 * 4 4 8 8 9 9 * 8 8 9 9 * 12 12 * 1 diff --git a/js/js.translator/testData/lineNumbers/inlineLocalVarsRef.kt b/js/js.translator/testData/lineNumbers/inlineLocalVarsRef.kt index 53884d97534..df908795859 100644 --- a/js/js.translator/testData/lineNumbers/inlineLocalVarsRef.kt +++ b/js/js.translator/testData/lineNumbers/inlineLocalVarsRef.kt @@ -9,4 +9,5 @@ fun bar() { foo(42) } -// LINES: 1 1 1 1 1 6 2 2 3 3 4 4 8 10 2 2 9 2 3 3 4 4 \ No newline at end of file +// LINES(JS): 1 1 1 1 1 6 2 2 3 3 4 4 8 10 2 2 9 2 3 3 4 4 +// LINES(JS_IR): 2 2 3 4 4 * 2 2 3 4 4 diff --git a/js/js.translator/testData/lineNumbers/inlineMultiModule/simple.kt b/js/js.translator/testData/lineNumbers/inlineMultiModule/simple.kt index 9f3e71a7f32..7f6204aa274 100644 --- a/js/js.translator/testData/lineNumbers/inlineMultiModule/simple.kt +++ b/js/js.translator/testData/lineNumbers/inlineMultiModule/simple.kt @@ -8,7 +8,8 @@ inline fun foo(x: String) { println("foo2($x);") } -// LINES: 6 6 6 6 6 9 7 7 8 8 +// LINES(JS): 6 6 6 6 6 9 7 7 8 8 +// LINES(JS_IR): 7 7 8 8 // MODULE: main(lib) // FILE: main.kt @@ -21,4 +22,5 @@ fun box() { foo("42") } -// LINES: 6 19 22 7 7 20 7 8 8 20 8 7 7 21 7 8 8 21 8 \ No newline at end of file +// LINES(JS): 6 20 23 7 7 21 7 8 8 21 8 7 7 22 7 8 8 22 8 +// LINES(JS_IR): 7 7 8 8 7 7 8 8 diff --git a/js/js.translator/testData/lineNumbers/inlineReturn.kt b/js/js.translator/testData/lineNumbers/inlineReturn.kt index a34a4878d95..b944ad9657f 100644 --- a/js/js.translator/testData/lineNumbers/inlineReturn.kt +++ b/js/js.translator/testData/lineNumbers/inlineReturn.kt @@ -21,4 +21,5 @@ fun bar(x: Int) { println("%") } -// LINES: 1 1 1 1 1 1 1 1 1 17 2 2 3 3 4 7 7 9 9 10 10 11 14 14 16 16 19 22 20 20 20 20 17 2 2 3 3 4 3 7 7 9 9 10 10 11 10 14 14 16 16 20 21 21 \ No newline at end of file +// LINES(JS): 1 1 1 1 1 1 1 1 1 17 2 2 3 3 4 7 7 9 9 10 10 11 14 14 16 16 19 22 20 20 20 20 17 2 2 3 3 4 3 7 7 9 9 10 10 11 10 14 14 16 16 20 21 21 +// LINES(JS_IR): 2 3 3 4 7 7 9 10 10 11 14 14 16 16 * 20 20 2 3 3 4 * 7 7 9 10 10 11 * 14 14 16 16 20 20 21 21 diff --git a/js/js.translator/testData/lineNumbers/inlining.kt b/js/js.translator/testData/lineNumbers/inlining.kt index 142dd8c6234..e54d664dda7 100644 --- a/js/js.translator/testData/lineNumbers/inlining.kt +++ b/js/js.translator/testData/lineNumbers/inlining.kt @@ -11,4 +11,5 @@ inline fun bar() { println("bar2") } -// LINES: 1 7 2 2 10 10 11 11 4 4 10 10 11 11 6 6 9 9 9 9 9 12 10 10 11 11 +// LINES(JS): 1 7 2 2 10 10 11 11 4 4 10 10 11 11 6 6 9 9 9 9 9 12 10 10 11 11 +// LINES(JS_IR): 2 2 10 10 11 11 4 4 10 10 11 11 6 6 * 10 10 11 11 diff --git a/js/js.translator/testData/lineNumbers/inliningWithLambda.kt b/js/js.translator/testData/lineNumbers/inliningWithLambda.kt index 4cf3ba6aeb2..644133cf5ee 100644 --- a/js/js.translator/testData/lineNumbers/inliningWithLambda.kt +++ b/js/js.translator/testData/lineNumbers/inliningWithLambda.kt @@ -16,4 +16,5 @@ inline fun foo(f: () -> Unit) { println("after") } -// LINES: 1 11 2 2 14 14 4 4 16 16 6 6 14 14 8 8 16 16 10 10 13 13 13 13 13 17 14 14 15 15 16 16 \ No newline at end of file +// LINES(JS): 1 11 2 2 14 14 4 4 16 16 6 6 14 14 8 8 16 16 10 10 13 13 13 13 13 17 14 14 15 15 16 16 +// LINES(JS_IR): 2 2 14 14 4 4 16 16 6 6 14 14 8 8 16 16 10 10 * 14 14 15 15 16 16 diff --git a/js/js.translator/testData/lineNumbers/innerClass.kt b/js/js.translator/testData/lineNumbers/innerClass.kt index 7e0f1000832..1c168baab6b 100644 --- a/js/js.translator/testData/lineNumbers/innerClass.kt +++ b/js/js.translator/testData/lineNumbers/innerClass.kt @@ -6,4 +6,5 @@ class A(val x: Int) { } } -// LINES: 1 1 2 2 3 5 4 4 \ No newline at end of file +// LINES(JS): 1 1 2 2 3 5 4 4 +// LINES(JS_IR): 2 2 * 4 4 * 1 1 * 1 1 diff --git a/js/js.translator/testData/lineNumbers/isOperator.kt b/js/js.translator/testData/lineNumbers/isOperator.kt index 01d12193de7..98c15d8b09f 100644 --- a/js/js.translator/testData/lineNumbers/isOperator.kt +++ b/js/js.translator/testData/lineNumbers/isOperator.kt @@ -11,4 +11,5 @@ inline fun foo(): Boolean { return true } -// LINES: 3 7 4 4 4 10 10 4 11 4 5 5 9 12 10 10 11 11 * 1 * 1 \ No newline at end of file +// LINES(JS): 3 7 4 4 4 10 10 4 11 4 5 5 9 12 10 10 11 11 * 1 * 1 +// LINES(JS_IR): 1 1 * 1 1 * 4 * 10 10 11 11 4 4 * 5 5 * 10 10 11 11 * 1 diff --git a/js/js.translator/testData/lineNumbers/jsCode.kt b/js/js.translator/testData/lineNumbers/jsCode.kt index c7dcb172bec..e4fd0918f32 100644 --- a/js/js.translator/testData/lineNumbers/jsCode.kt +++ b/js/js.translator/testData/lineNumbers/jsCode.kt @@ -5,4 +5,7 @@ fun foo() { println("after: $x") } -// LINES: 1 6 2 2 3 3 4 4 5 5 \ No newline at end of file +// LINES(JS): 1 6 2 2 3 3 4 4 5 5 +// LINES(JS_IR): 2 2 3 3 2 2 5 5 +// FIXME: ^^^^^^^ +// js function call debug info is incorrect diff --git a/js/js.translator/testData/lineNumbers/lambdaWithClosure.kt b/js/js.translator/testData/lineNumbers/lambdaWithClosure.kt index 251eb8f4c1f..6cdaaac8c17 100644 --- a/js/js.translator/testData/lineNumbers/lambdaWithClosure.kt +++ b/js/js.translator/testData/lineNumbers/lambdaWithClosure.kt @@ -4,4 +4,5 @@ fun foo(x: Int): () -> Unit = { fun bar() = 23 -// LINES: 1 1 1 3 2 2 3 3 1 1 1 5 5 5 \ No newline at end of file +// LINES(JS): 1 1 1 3 2 2 3 3 1 1 1 5 5 5 +// LINES(JS_IR): 3 3 1 * 5 5 * 2 2 diff --git a/js/js.translator/testData/lineNumbers/lastExpressionInInlineLambda.kt b/js/js.translator/testData/lineNumbers/lastExpressionInInlineLambda.kt index 043b9802b7d..3ced4fa7686 100644 --- a/js/js.translator/testData/lineNumbers/lastExpressionInInlineLambda.kt +++ b/js/js.translator/testData/lineNumbers/lastExpressionInInlineLambda.kt @@ -24,4 +24,5 @@ fun baz() = "baz" fun boo() = "boo" -// LINES: 1 17 9 4 6 6 7 7 3 3 3 * 13 12 13 13 14 19 21 20 20 23 23 23 25 25 25 \ No newline at end of file +// LINES(JS): 1 17 9 4 6 6 7 7 3 3 3 * 13 12 13 13 14 19 21 20 20 23 23 23 25 25 25 +// LINES(JS_IR): 4 * 7 * 3 20 20 * 12 12 12 13 14 20 20 * 20 20 * 23 23 * 25 25 diff --git a/js/js.translator/testData/lineNumbers/literals.kt b/js/js.translator/testData/lineNumbers/literals.kt index d3c9da5f054..33010ae7465 100644 --- a/js/js.translator/testData/lineNumbers/literals.kt +++ b/js/js.translator/testData/lineNumbers/literals.kt @@ -26,4 +26,5 @@ fun bar(vararg x: Any?) { println(x) } -// LINES: 1 2 22 3 4 5 6 7 8 9 10 13 14 15 16 17 18 19 20 * 25 27 26 26 \ No newline at end of file +// LINES(JS): 1 2 22 3 4 5 6 7 8 9 10 13 14 15 16 17 18 19 20 * 25 27 26 26 +// LINES(JS_IR): 3 4 5 6 7 8 9 10 13 14 15 16 17 18 19 20 * 26 26 diff --git a/js/js.translator/testData/lineNumbers/longLiteral.kt b/js/js.translator/testData/lineNumbers/longLiteral.kt index de7fc097f23..9544cbb033e 100644 --- a/js/js.translator/testData/lineNumbers/longLiteral.kt +++ b/js/js.translator/testData/lineNumbers/longLiteral.kt @@ -5,4 +5,5 @@ fun foo() { 0L) } -// LINES: 3 * 5 1 6 2 4 \ No newline at end of file +// LINES(JS): 3 * 5 1 6 2 4 +// LINES(JS_IR): 2 4 diff --git a/js/js.translator/testData/lineNumbers/memberFunWithDefaultParam.kt b/js/js.translator/testData/lineNumbers/memberFunWithDefaultParam.kt index 3d5c3608e37..b52a3dc8c50 100644 --- a/js/js.translator/testData/lineNumbers/memberFunWithDefaultParam.kt +++ b/js/js.translator/testData/lineNumbers/memberFunWithDefaultParam.kt @@ -10,4 +10,5 @@ class B : A() { } } -// LINES: 1 2 2 2 2 2 2 2 2 2 4 4 4 * 7 7 8 10 9 9 +// LINES(JS): 1 2 2 2 2 2 2 2 2 2 4 4 4 * 7 7 8 10 9 9 +// LINES(JS_IR): 2 2 * 2 2 2 2 2 * 4 4 * 7 * 9 9 diff --git a/js/js.translator/testData/lineNumbers/multipleReferences.kt b/js/js.translator/testData/lineNumbers/multipleReferences.kt index df3e574fc53..cee070c4ba9 100644 --- a/js/js.translator/testData/lineNumbers/multipleReferences.kt +++ b/js/js.translator/testData/lineNumbers/multipleReferences.kt @@ -12,4 +12,5 @@ object O { val y = 23 } -// LINES: 1 9 2 2 3 3 4 4 6 6 7 7 8 8 11 11 12 12 * 11 11 11 11 11 11 +// LINES(JS): 1 9 2 2 3 3 4 4 6 6 7 7 8 8 11 11 12 12 * 11 11 11 11 11 11 +// LINES(JS_IR): 2 2 3 3 4 4 6 6 7 7 8 8 * 12 12 * 12 12 diff --git a/js/js.translator/testData/lineNumbers/objectInstanceFunction.kt b/js/js.translator/testData/lineNumbers/objectInstanceFunction.kt index 68d2efd08c8..bbddea06a31 100644 --- a/js/js.translator/testData/lineNumbers/objectInstanceFunction.kt +++ b/js/js.translator/testData/lineNumbers/objectInstanceFunction.kt @@ -4,4 +4,5 @@ fun foo() { println("foo") } -// LINES: 1 1 * 1 1 1 1 1 1 3 5 4 4 \ No newline at end of file +// LINES(JS): 1 1 * 1 1 1 1 1 1 3 5 4 4 +// LINES(JS_IR): 4 4 diff --git a/js/js.translator/testData/lineNumbers/optionalArgs.kt b/js/js.translator/testData/lineNumbers/optionalArgs.kt index 79dc057e42f..5a29b3e15b0 100644 --- a/js/js.translator/testData/lineNumbers/optionalArgs.kt +++ b/js/js.translator/testData/lineNumbers/optionalArgs.kt @@ -7,4 +7,5 @@ fun box( println(y) } -// LINES: 1 8 2 2 2 2 3 3 3 4 6 6 7 7 \ No newline at end of file +// LINES(JS): 1 8 2 2 2 2 3 3 3 4 6 6 7 7 +// LINES(JS_IR): 1 1 2 1 4 1 * 6 6 7 7 * 1 1 2 1 1 4 1 1 diff --git a/js/js.translator/testData/lineNumbers/propertyWithoutInitializer.kt b/js/js.translator/testData/lineNumbers/propertyWithoutInitializer.kt index 32788661e44..411e86b20e5 100644 --- a/js/js.translator/testData/lineNumbers/propertyWithoutInitializer.kt +++ b/js/js.translator/testData/lineNumbers/propertyWithoutInitializer.kt @@ -9,4 +9,5 @@ open class A { } } -// LINES: 1 2 4 7 7 8 8 4 4 4 \ No newline at end of file +// LINES(JS): 1 2 4 7 7 8 8 4 4 4 +// LINES(JS_IR): 7 7 8 8 * 2 2 * 4 4 diff --git a/js/js.translator/testData/lineNumbers/simple.kt b/js/js.translator/testData/lineNumbers/simple.kt index 9e43a6d6a88..59ef6292cad 100644 --- a/js/js.translator/testData/lineNumbers/simple.kt +++ b/js/js.translator/testData/lineNumbers/simple.kt @@ -3,4 +3,5 @@ fun box() { println("bar") } -// LINES: 1 4 2 2 3 3 \ No newline at end of file +// LINES(JS): 1 4 2 2 3 3 +// LINES(JS_IR): 2 2 3 3 diff --git a/js/js.translator/testData/lineNumbers/stringLiteral.kt b/js/js.translator/testData/lineNumbers/stringLiteral.kt index a0fc32c8017..3ece5b624de 100644 --- a/js/js.translator/testData/lineNumbers/stringLiteral.kt +++ b/js/js.translator/testData/lineNumbers/stringLiteral.kt @@ -4,4 +4,5 @@ fun box(x: Int): String { "suffix" } -// LINES: 1 5 2 2 3 4 \ No newline at end of file +// LINES(JS): 1 5 2 2 3 4 +// LINES(JS_IR): 2 2 3 4 diff --git a/js/js.translator/testData/lineNumbers/syntheticCodeInConstructors.kt b/js/js.translator/testData/lineNumbers/syntheticCodeInConstructors.kt index c065273d1ae..94b8bca26ff 100644 --- a/js/js.translator/testData/lineNumbers/syntheticCodeInConstructors.kt +++ b/js/js.translator/testData/lineNumbers/syntheticCodeInConstructors.kt @@ -25,4 +25,5 @@ class C : A { ) } -// LINES: 1 1 3 * 1 1 1 1 1 1 7 * 9 10 11 * 15 15 16 17 14 19 15 15 22 22 23 24 22 22 \ No newline at end of file +// LINES(JS): 1 1 3 * 1 1 1 1 1 1 7 * 9 10 11 * 15 15 16 17 14 19 15 15 22 22 23 24 22 22 +// LINES(JS_IR): 3 * 10 11 * 16 17 15 19 * 23 24 23 diff --git a/js/js.translator/testData/lineNumbers/syntheticCodeInEnums.kt b/js/js.translator/testData/lineNumbers/syntheticCodeInEnums.kt index 6074bc7c712..f5356f56d45 100644 --- a/js/js.translator/testData/lineNumbers/syntheticCodeInEnums.kt +++ b/js/js.translator/testData/lineNumbers/syntheticCodeInEnums.kt @@ -8,4 +8,5 @@ enum class E { } } -// LINES: 1 1 1 1 1 1 1 1 1 2 2 3 3 4 * 2 2 2 2 * 3 3 3 3 4 4 4 6 6 * 4 4 4 4 * 1 1 1 * 1 1 1 1 1 1 1 1 1 1 \ No newline at end of file +// LINES(JS): 1 1 1 1 1 1 1 1 1 2 2 3 3 4 * 2 2 2 2 * 3 3 3 3 4 4 4 6 6 * 4 4 4 4 * 1 1 1 * 1 1 1 1 1 1 1 1 1 1 +// LINES(JS_IR): 6 6 diff --git a/js/js.translator/testData/lineNumbers/valParameter.kt b/js/js.translator/testData/lineNumbers/valParameter.kt index 0a9189a202a..e10502c6c72 100644 --- a/js/js.translator/testData/lineNumbers/valParameter.kt +++ b/js/js.translator/testData/lineNumbers/valParameter.kt @@ -7,4 +7,5 @@ fun foo() { A(23, "foo") } -// LINES: 1 2 3 * 6 8 7 7 \ No newline at end of file +// LINES(JS): 1 2 3 * 6 8 7 7 +// LINES(JS_IR): 2 2 3 3 * 2 2 * 3 3 * 7 7 diff --git a/js/js.translator/testData/lineNumbers/whenEntryWithMultipleConditions.kt b/js/js.translator/testData/lineNumbers/whenEntryWithMultipleConditions.kt index acaa4a7e374..919ab11f3f3 100644 --- a/js/js.translator/testData/lineNumbers/whenEntryWithMultipleConditions.kt +++ b/js/js.translator/testData/lineNumbers/whenEntryWithMultipleConditions.kt @@ -18,4 +18,5 @@ fun box(x: Int) { ) } -// LINES: 1 19 4 4 3 3 4 6 9 9 6 11 13 13 11 16 16 3 2 \ No newline at end of file +// LINES(JS): 1 19 4 4 3 3 4 6 9 9 6 11 13 13 11 16 16 3 2 +// LINES(JS_IR): 4 4 2 6 7 8 9 11 12 13 16 diff --git a/js/js.translator/testData/lineNumbers/whenEntryWithMultipleConditionsNonOptimized.kt b/js/js.translator/testData/lineNumbers/whenEntryWithMultipleConditionsNonOptimized.kt index 2882386a5df..5e21b38637b 100644 --- a/js/js.translator/testData/lineNumbers/whenEntryWithMultipleConditionsNonOptimized.kt +++ b/js/js.translator/testData/lineNumbers/whenEntryWithMultipleConditionsNonOptimized.kt @@ -28,4 +28,5 @@ fun four() = 4 fun five() = 5 -// LINES: 1 19 4 4 3 6 4 6 4 7 4 8 9 9 11 4 11 4 12 13 13 16 16 2 21 21 21 23 23 23 25 25 25 27 27 27 29 29 29 \ No newline at end of file +// LINES(JS): 1 19 4 4 3 6 4 6 4 7 4 8 9 9 11 4 11 4 12 13 13 16 16 2 21 21 21 23 23 23 25 25 25 27 27 27 29 29 29 +// LINES(JS_IR): 4 4 2 6 7 8 9 11 12 13 16 * 21 21 * 23 23 * 25 25 * 27 27 * 29 29 diff --git a/js/js.translator/testData/lineNumbers/whenIn.kt b/js/js.translator/testData/lineNumbers/whenIn.kt index 245142865c3..a96f0a37f81 100644 --- a/js/js.translator/testData/lineNumbers/whenIn.kt +++ b/js/js.translator/testData/lineNumbers/whenIn.kt @@ -13,4 +13,5 @@ fun foo(): Int = 23 fun bar(): IntRange = 1000..2000 -// LINES: 1 10 2 2 2 2 3 3 4 4 5 5 6 6 7 7 8 8 12 12 12 14 14 14 \ No newline at end of file +// LINES(JS): 1 10 2 2 2 2 3 3 4 4 5 5 6 6 7 7 8 8 12 12 12 14 14 14 +// LINES(JS_IR): 2 2 3 4 4 5 6 6 7 7 7 7 7 8 8 * 12 12 * 14 14 diff --git a/js/js.translator/testData/lineNumbers/whenIs.kt b/js/js.translator/testData/lineNumbers/whenIs.kt index a5a2c15fbfd..e742b06bf97 100644 --- a/js/js.translator/testData/lineNumbers/whenIs.kt +++ b/js/js.translator/testData/lineNumbers/whenIs.kt @@ -13,4 +13,5 @@ open class A open class B : A() -// LINES: 1 10 2 2 2 2 3 3 4 4 5 5 6 6 8 8 12 * 14 14 \ No newline at end of file +// LINES(JS): 1 10 2 2 2 2 3 3 4 4 5 5 6 6 8 8 12 * 14 14 +// LINES(JS_IR): 2 2 4 4 * 14 diff --git a/js/js.translator/testData/lineNumbers/whileWithComplexCondition.kt b/js/js.translator/testData/lineNumbers/whileWithComplexCondition.kt index f61619bf4bc..e18e8a354b1 100644 --- a/js/js.translator/testData/lineNumbers/whileWithComplexCondition.kt +++ b/js/js.translator/testData/lineNumbers/whileWithComplexCondition.kt @@ -12,4 +12,5 @@ fun box() { } } -// LINES: 1 13 5 5 4 2 2 3 5 5 8 8 * 3 4 9 3 11 11 \ No newline at end of file +// LINES(JS): 1 13 5 5 4 2 2 3 5 5 8 8 * 3 4 9 3 11 11 +// LINES(JS_IR): 2 2 * 5 5 5 5 5 8 8 * 4 9 * 11 11