From 6df0e0c847312aa1547e58c7a1e00d4141dae822 Mon Sep 17 00:00:00 2001 From: Alexander Korepanov Date: Wed, 20 Dec 2023 16:19:58 +0100 Subject: [PATCH] [JS FIR] Enable FirJsLineNumberTests for FIR ^KT-64426 Fixed --- js/ReadMe.md | 2 +- .../generators/tests/GenerateJsTests.kt | 7 +- .../kotlin/js/test/fir/AbstractJsFirTest.kt | 30 +- .../js/test/handlers/JsLineNumberHandler.kt | 30 +- .../kotlin/js/test/ir/AbstractJsIrTest.kt | 26 +- .../fir/FirJsLineNumberTestGenerated.java | 343 ++++++++++++++++++ .../test/ir/JsIrLineNumberTestGenerated.java | 6 + .../lineNumbers/andAndWithSideEffect.kt | 3 +- .../testData/lineNumbers/backingField.kt | 3 +- .../testData/lineNumbers/catch.kt | 3 +- .../testData/lineNumbers/chainedCall.kt | 3 +- .../lineNumbers/classCapturingLocals.kt | 3 +- .../testData/lineNumbers/closure.kt | 3 +- .../complexExpressionAsDefaultArgument.kt | 3 +- .../lineNumbers/conditionalDecomposed.kt | 4 +- .../testData/lineNumbers/coroutine.kt | 1 - .../lineNumbers/coroutineNullAssertion.kt | 1 - .../testData/lineNumbers/dataClass.kt | 4 +- .../testData/lineNumbers/delegateMemberVal.kt | 4 +- .../testData/lineNumbers/delegatedProperty.kt | 4 +- .../testData/lineNumbers/delegation.kt | 1 - .../testData/lineNumbers/destructuring.kt | 4 +- .../lineNumbers/destructuringInline.kt | 4 +- .../doWhileWithComplexCondition.kt | 3 +- .../testData/lineNumbers/elvis.kt | 1 - .../lineNumbers/enumCompanionObject.kt | 3 +- .../testData/lineNumbers/enumObject.kt | 3 +- .../lineNumbers/expressionAsFunctionBody.kt | 1 - js/js.translator/testData/lineNumbers/for.kt | 3 +- .../testData/lineNumbers/increment.kt | 3 +- .../testData/lineNumbers/inlineArguments.kt | 1 - .../lineNumbers/inlineLocalVarsRef.kt | 3 +- .../lineNumbers/inlineMultiModule/simple.kt | 6 +- .../testData/lineNumbers/inlineReturn.kt | 3 +- .../testData/lineNumbers/inlining.kt | 3 +- .../lineNumbers/inliningWithLambda.kt | 3 +- .../testData/lineNumbers/innerClass.kt | 3 +- .../testData/lineNumbers/isOperator.kt | 3 +- .../testData/lineNumbers/jsCode.kt | 5 +- .../testData/lineNumbers/lambdaWithClosure.kt | 3 +- .../lastExpressionInInlineLambda.kt | 3 +- .../testData/lineNumbers/literals.kt | 3 +- .../testData/lineNumbers/longLiteral.kt | 3 +- .../lineNumbers/memberFunWithDefaultParam.kt | 3 +- .../lineNumbers/multipleReferences.kt | 3 +- .../lineNumbers/objectInstanceFunction.kt | 3 +- .../testData/lineNumbers/optionalArgs.kt | 3 +- .../lineNumbers/propertyWithoutInitializer.kt | 11 +- .../testData/lineNumbers/simple.kt | 3 +- .../testData/lineNumbers/stringLiteral.kt | 3 +- .../syntheticCodeInConstructors.kt | 3 +- .../lineNumbers/syntheticCodeInEnums.kt | 3 +- .../testData/lineNumbers/valParameter.kt | 3 +- .../whenEntryWithMultipleConditions.kt | 4 +- ...EntryWithMultipleConditionsNonOptimized.kt | 4 +- .../testData/lineNumbers/whenIn.kt | 3 +- .../testData/lineNumbers/whenIs.kt | 3 +- .../lineNumbers/whileWithComplexCondition.kt | 3 +- 58 files changed, 460 insertions(+), 146 deletions(-) create mode 100644 js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/fir/FirJsLineNumberTestGenerated.java diff --git a/js/ReadMe.md b/js/ReadMe.md index efa62efcc7f..1490bbd5184 100644 --- a/js/ReadMe.md +++ b/js/ReadMe.md @@ -46,7 +46,7 @@ There are multiple kinds of tests. Here are some of them: Such tests must contain a `fn box(): String` function. If this function returns `"OK"`, the test is considered passed, and if it returns anything else, the test is considered failed. - Line number tests, located in `js/js.translator/testData/lineNumbers`. These are to ensure that the debug info in the generated JavaScript matches some expectation. -The expectation is written in a comment staring with `// LINES(JS):` or `// LINES(JS_IR):`. +The expectation is written in a comment staring with `// LINES(JS_IR):` or `// LINES(ClassicFrontend JS):` or `// LINES(FIR JS_IR):`. These comments contain a list of line numbers in the test file that the compiler output is generated from. The actual line numbers can be viewed in the generated JS file whose name ends with `-lines.js`. - TypeScript export tests, located in `js/js.translator/testData/typescript-export`. 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 2800661f32f..6a179d281cf 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 @@ -165,10 +165,9 @@ fun main(args: Array) { // model("typescript-export/", pattern = "^([^_](.+))\\.kt$") // } - // see todo on defining class -// testClass { -// model("lineNumbers/") -// } + 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/fir/AbstractJsFirTest.kt b/js/js.tests/test/org/jetbrains/kotlin/js/test/fir/AbstractJsFirTest.kt index 7c8ef9b527e..524b1855cbc 100644 --- a/js/js.tests/test/org/jetbrains/kotlin/js/test/fir/AbstractJsFirTest.kt +++ b/js/js.tests/test/org/jetbrains/kotlin/js/test/fir/AbstractJsFirTest.kt @@ -7,6 +7,7 @@ import org.jetbrains.kotlin.js.test.converters.JsIrBackendFacade import org.jetbrains.kotlin.js.test.converters.incremental.RecompileModuleJsIrBackendFacade import org.jetbrains.kotlin.js.test.handlers.JsDebugRunner import org.jetbrains.kotlin.js.test.handlers.JsIrRecompiledArtifactsIdentityHandler +import org.jetbrains.kotlin.js.test.handlers.createFirJsLineNumberHandler import org.jetbrains.kotlin.parsing.parseBoolean import org.jetbrains.kotlin.test.Constructor import org.jetbrains.kotlin.test.FirParser @@ -134,16 +135,25 @@ open class AbstractFirJsCodegenInlineTest : AbstractFirJsTest( // } //} -// TODO: implement separate expectations for FIR/JS to reuse testdata, disabled for now -//open class AbstractJsFirLineNumberTest : AbstractFirJsTest( -// pathToTestDir = "${JsEnvironmentConfigurator.TEST_DATA_DIR_PATH}/lineNumbers/", -// testGroupOutputDirPrefix = "firLineNumbers/" -//) { -// override fun configure(builder: TestConfigurationBuilder) { -// super.configure(builder) -// configureJsIrLineNumberTest(builder) -// } -//} +open class AbstractFirJsLineNumberTest : AbstractFirJsTest( + pathToTestDir = "${JsEnvironmentConfigurator.TEST_DATA_DIR_PATH}/lineNumbers/", + testGroupOutputDirPrefix = "firLineNumbers/" +) { + 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(::createFirJsLineNumberHandler) + } + } + } +} open class AbstractFirJsSteppingTest : AbstractFirJsTest( pathToTestDir = "compiler/testData/debug/stepping/", 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 1ea3f6db2cc..bfc7757808a 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 @@ -9,39 +9,36 @@ import org.jetbrains.kotlin.ir.backend.js.transformers.irToJs.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 import org.jetbrains.kotlin.js.util.TextOutputImpl import org.jetbrains.kotlin.test.backend.handlers.JsBinaryArtifactHandler import org.jetbrains.kotlin.test.model.BinaryArtifacts +import org.jetbrains.kotlin.test.model.FrontendKind +import org.jetbrains.kotlin.test.model.FrontendKinds 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. + * The test file is expected to contain the `// LINE($linePattern)` 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) { - +private class JsLineNumberHandler(private val frontend: FrontendKind<*>, testServices: TestServices) : JsBinaryArtifactHandler(testServices) { private val translationModeForIr = TranslationMode.PER_MODULE_DEV override fun processAfterAllModules(someAssertionWasFailed: Boolean) {} override fun processModule(module: TestModule, info: BinaryArtifacts.Js) { when (val artifact = info.unwrap()) { - is BinaryArtifacts.Js.OldJsArtifact -> - verifyModule(module, TranslationMode.FULL_DEV, artifact.translationResult.cast().program, "JS") is BinaryArtifacts.Js.JsIrArtifact -> { val testModules = testServices.moduleStructure.modules val moduleId2TestModule = testModules.associateBy { it.name.safeModuleName } @@ -58,7 +55,7 @@ class JsLineNumberHandler(testServices: TestServices) : JsBinaryArtifactHandler( } } - verifyModule(module, translationModeForIr, compilationOutputs.jsProgram!!, "JS_IR") + verifyModule(module, translationModeForIr, compilationOutputs.jsProgram!!) verifiedModuleCount += 1 } @@ -77,8 +74,7 @@ class JsLineNumberHandler(testServices: TestServices) : JsBinaryArtifactHandler( private fun verifyModule( module: TestModule, translationMode: TranslationMode, - jsProgram: JsProgram, - backendPattern: String + jsProgram: JsProgram ) { val baseOutputPath = JsEnvironmentConfigurator.getJsModuleArtifactPath(testServices, module.name, translationMode) @@ -96,12 +92,12 @@ class JsLineNumberHandler(testServices: TestServices) : JsBinaryArtifactHandler( writeText(generatedCode) } - val linesPattern = Regex("^ *// *LINES\\($backendPattern\\): *(.*)$", RegexOption.MULTILINE) + val linesPattern = Regex("^ *// *LINES\\((?:$frontend )? *JS_IR\\): *(.*)$", 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" + "'// LINES(${linesPattern.pattern}): ' comment was not found in source file. Generated code is:\n$generatedCode" } fun List.render() = joinToString(" ") { it?.toString() ?: "*" } @@ -117,3 +113,11 @@ class JsLineNumberHandler(testServices: TestServices) : JsBinaryArtifactHandler( testServices.assertions.assertEquals(expectedLines, actualLines) { generatedCode } } } + +fun createIrJsLineNumberHandler(testServices: TestServices): JsBinaryArtifactHandler { + return JsLineNumberHandler(FrontendKinds.ClassicFrontend, testServices) +} + +fun createFirJsLineNumberHandler(testServices: TestServices): JsBinaryArtifactHandler { + return JsLineNumberHandler(FrontendKinds.FIR, testServices) +} 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 723d8442606..d4ee9314df4 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 @@ -138,7 +138,17 @@ open class AbstractJsIrLineNumberTest : AbstractJsIrTest( ) { override fun configure(builder: TestConfigurationBuilder) { super.configure(builder) - configureJsIrLineNumberTest(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(::createIrJsLineNumberHandler) + } + } } } @@ -193,20 +203,6 @@ open class AbstractWebDemoExamplesTest : AbstractJsIrTest( } } -private fun configureJsIrLineNumberTest(builder: TestConfigurationBuilder) { - 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 AbstractIrJsSteppingTest : AbstractJsIrTest( pathToTestDir = "compiler/testData/debug/stepping/", testGroupOutputDirPrefix = "debug/irStepping/" diff --git a/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/fir/FirJsLineNumberTestGenerated.java b/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/fir/FirJsLineNumberTestGenerated.java new file mode 100644 index 00000000000..3f48de88695 --- /dev/null +++ b/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/fir/FirJsLineNumberTestGenerated.java @@ -0,0 +1,343 @@ +/* + * Copyright 2010-2024 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.fir; + +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 org.jetbrains.kotlin.generators.tests.GenerateJsTestsKt}. DO NOT MODIFY MANUALLY */ +@SuppressWarnings("all") +@TestMetadata("js/js.translator/testData/lineNumbers") +@TestDataPath("$PROJECT_ROOT") +public class FirJsLineNumberTestGenerated extends AbstractFirJsLineNumberTest { + @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.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 index c93276460ae..28a56aeb718 100644 --- 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 @@ -205,6 +205,12 @@ public class JsIrLineNumberTestGenerated extends AbstractJsIrLineNumberTest { 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 { diff --git a/js/js.translator/testData/lineNumbers/andAndWithSideEffect.kt b/js/js.translator/testData/lineNumbers/andAndWithSideEffect.kt index 1f7d5db03fe..e45690fae65 100644 --- a/js/js.translator/testData/lineNumbers/andAndWithSideEffect.kt +++ b/js/js.translator/testData/lineNumbers/andAndWithSideEffect.kt @@ -6,5 +6,4 @@ fun box(x: Int, y: Int) { fun foo(x: Int) = x -// 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): 1 1 * 3 3 3 * 3 3 * 4 4 4 * 4 4 2 7 7 7 7 +// LINES(JS_IR): 1 1 * 3 3 3 * 3 3 * 4 4 4 * 4 4 2 7 7 7 7 diff --git a/js/js.translator/testData/lineNumbers/backingField.kt b/js/js.translator/testData/lineNumbers/backingField.kt index 8fe289e72be..9ee66ebe7b9 100644 --- a/js/js.translator/testData/lineNumbers/backingField.kt +++ b/js/js.translator/testData/lineNumbers/backingField.kt @@ -12,5 +12,4 @@ open class A { } } -// LINES(JS): 1 2 2 4 4 2 2 2 2 5 5 5 6 7 12 8 9 10 11 -// LINES(JS_IR): 1 1 2 2 4 4 2 2 2 2 2 2 7 8 9 10 10 11 5 6 6 5 6 +// LINES(JS_IR): 1 1 2 2 4 4 2 2 2 2 2 2 7 8 9 10 10 11 5 6 6 5 6 diff --git a/js/js.translator/testData/lineNumbers/catch.kt b/js/js.translator/testData/lineNumbers/catch.kt index 0a0768935b5..996bcd9ef21 100644 --- a/js/js.translator/testData/lineNumbers/catch.kt +++ b/js/js.translator/testData/lineNumbers/catch.kt @@ -19,5 +19,4 @@ fun bar() { } } -// 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): 1 1 3 3 * 5 5 6 6 * 8 8 9 9 * 13 13 15 15 17 17 18 18 +// LINES(JS_IR): 1 1 3 3 * 5 5 6 6 * 8 8 9 9 * 13 13 15 15 17 17 18 18 diff --git a/js/js.translator/testData/lineNumbers/chainedCall.kt b/js/js.translator/testData/lineNumbers/chainedCall.kt index b92643d157d..b691158eb5b 100644 --- a/js/js.translator/testData/lineNumbers/chainedCall.kt +++ b/js/js.translator/testData/lineNumbers/chainedCall.kt @@ -14,5 +14,4 @@ class C { val baz: dynamic get() = null } -// LINES(JS): 1 9 2 4 3 2 6 8 7 6 11 12 12 12 14 14 14 -// LINES(JS_IR): 1 1 2 4 3 2 6 8 7 6 11 11 12 12 12 14 14 14 +// LINES(JS_IR): 1 1 2 4 3 2 6 8 7 6 11 11 12 12 12 14 14 14 diff --git a/js/js.translator/testData/lineNumbers/classCapturingLocals.kt b/js/js.translator/testData/lineNumbers/classCapturingLocals.kt index 2ca4f510977..9b2f68d4f4b 100644 --- a/js/js.translator/testData/lineNumbers/classCapturingLocals.kt +++ b/js/js.translator/testData/lineNumbers/classCapturingLocals.kt @@ -14,5 +14,4 @@ fun A.foo() { fun baz() = 23 -// 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): 1 1 3 3 4 11 11 12 12 15 15 15 15 5 3 4 5 * 6 7 7 8 8 +// LINES(JS_IR): 1 1 3 3 4 11 11 12 12 15 15 15 15 5 3 4 5 * 6 7 7 8 8 diff --git a/js/js.translator/testData/lineNumbers/closure.kt b/js/js.translator/testData/lineNumbers/closure.kt index 331b009bae0..575b3b3b9a6 100644 --- a/js/js.translator/testData/lineNumbers/closure.kt +++ b/js/js.translator/testData/lineNumbers/closure.kt @@ -5,5 +5,4 @@ fun box(x: Int, y: Int): Int { return foo(y) } -// LINES(JS): 2 2 2 4 4 1 6 2 2 5 5 -// LINES(JS_IR): 1 1 5 5 2 1 3 4 4 4 +// LINES(JS_IR): 1 1 5 5 2 1 3 4 4 4 diff --git a/js/js.translator/testData/lineNumbers/complexExpressionAsDefaultArgument.kt b/js/js.translator/testData/lineNumbers/complexExpressionAsDefaultArgument.kt index f9cd45c9c42..2e76a18ed0b 100644 --- a/js/js.translator/testData/lineNumbers/complexExpressionAsDefaultArgument.kt +++ b/js/js.translator/testData/lineNumbers/complexExpressionAsDefaultArgument.kt @@ -11,5 +11,4 @@ fun baz() = 1 fun bar() = 2 -// 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): 1 2 8 * 4 3 4 5 * 8 8 10 10 10 10 12 12 12 12 +// LINES(JS_IR): 1 2 8 * 4 3 4 5 * 8 8 10 10 10 10 12 12 12 12 diff --git a/js/js.translator/testData/lineNumbers/conditionalDecomposed.kt b/js/js.translator/testData/lineNumbers/conditionalDecomposed.kt index 31578c63872..b2a0d58c458 100644 --- a/js/js.translator/testData/lineNumbers/conditionalDecomposed.kt +++ b/js/js.translator/testData/lineNumbers/conditionalDecomposed.kt @@ -14,5 +14,5 @@ private inline fun foo(): Int { return 23 } -// LINES(JS): 1 10 3 3 3 4 3 6 13 13 3 14 2 12 15 13 13 14 14 -// LINES(JS_IR): 1 1 * 3 4 6 * 13 13 14 2 12 12 13 13 14 14 +// LINES(ClassicFrontend JS_IR): 1 1 * 3 4 6 * 13 13 14 2 12 12 13 13 14 14 +// LINES(FIR JS_IR): 1 1 * 4 4 6 * 13 13 14 2 12 12 13 13 14 14 diff --git a/js/js.translator/testData/lineNumbers/coroutine.kt b/js/js.translator/testData/lineNumbers/coroutine.kt index 47f72366738..17f4460dd23 100644 --- a/js/js.translator/testData/lineNumbers/coroutine.kt +++ b/js/js.translator/testData/lineNumbers/coroutine.kt @@ -14,5 +14,4 @@ suspend fun bar(): Unit { println(a + b) } -// 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): 4 4 * 93 3 45 45 7 7 6 9 9 * 9 * 9 * 10 10 * 11 * 11 12 12 * 13 * 13 14 14 15 15 diff --git a/js/js.translator/testData/lineNumbers/coroutineNullAssertion.kt b/js/js.translator/testData/lineNumbers/coroutineNullAssertion.kt index c61bc388869..6f130f19afc 100644 --- a/js/js.translator/testData/lineNumbers/coroutineNullAssertion.kt +++ b/js/js.translator/testData/lineNumbers/coroutineNullAssertion.kt @@ -8,5 +8,4 @@ suspend fun foo() { suspend fun delay() { } -// 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 * 8 8 9 9 1 * 1 * 2 * 3 3 3 * 5 5 6 6 diff --git a/js/js.translator/testData/lineNumbers/dataClass.kt b/js/js.translator/testData/lineNumbers/dataClass.kt index 1224da4a58c..e7407545144 100644 --- a/js/js.translator/testData/lineNumbers/dataClass.kt +++ b/js/js.translator/testData/lineNumbers/dataClass.kt @@ -3,5 +3,5 @@ data class A( val y: String ) -// 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 -// LINES(JS_IR): 1 2 3 1 2 2 3 3 2 2 2 3 3 3 1 1 1 1 1 1 1 2 3 1 1 1 1 2 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 +// LINES(ClassicFrontend JS_IR): 1 2 3 1 2 2 3 3 2 2 2 3 3 3 1 1 1 1 1 1 1 2 3 1 1 1 1 2 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 +// LINES(FIR JS_IR): 1 2 3 1 2 2 3 3 2 2 2 3 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 1 1 1 diff --git a/js/js.translator/testData/lineNumbers/delegateMemberVal.kt b/js/js.translator/testData/lineNumbers/delegateMemberVal.kt index 98e828d1aba..e4ebda67768 100644 --- a/js/js.translator/testData/lineNumbers/delegateMemberVal.kt +++ b/js/js.translator/testData/lineNumbers/delegateMemberVal.kt @@ -13,5 +13,5 @@ class Delegate(val f: () -> Int) { } } -// 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 1 1 3 3 3 2 3 3 3 2 1 2 6 6 7 7 10 10 10 10 10 10 10 11 12 12 2 2 18 * 2 +// LINES(FIR JS_IR): 3 3 3 3 1 1 3 3 3 3 3 3 6 6 7 7 10 10 10 10 10 10 10 11 12 12 3 3 18 * 3 +// LINES(ClassicFrontend JS_IR): 3 3 3 3 1 1 3 3 3 2 3 3 3 2 1 2 6 6 7 7 10 10 10 10 10 10 10 11 12 12 2 2 18 * 2 diff --git a/js/js.translator/testData/lineNumbers/delegatedProperty.kt b/js/js.translator/testData/lineNumbers/delegatedProperty.kt index 4a9223de5c9..5aa9ea88a71 100644 --- a/js/js.translator/testData/lineNumbers/delegatedProperty.kt +++ b/js/js.translator/testData/lineNumbers/delegatedProperty.kt @@ -15,5 +15,5 @@ class B { } } -// LINES(JS): 3 4 5 * 4 4 4 * 8 9 11 10 10 13 15 14 14 -// LINES(JS_IR): 3 3 5 5 4 5 5 5 4 1 4 5 4 5 5 5 4 1 4 8 8 9 10 10 13 14 14 4 4 20 * 4 20 * 4 4 20 * 4 20 +// LINES(ClassicFrontend JS_IR): 3 3 5 5 4 5 5 5 4 1 4 5 4 5 5 5 4 1 4 8 8 9 10 10 13 14 14 4 4 20 * 4 20 * 4 4 20 * 4 20 +// LINES(FIR JS_IR): 3 3 5 5 4 5 5 5 5 5 5 8 8 9 10 10 13 14 14 5 5 20 * 5 20 * 5 5 20 * 5 20 diff --git a/js/js.translator/testData/lineNumbers/delegation.kt b/js/js.translator/testData/lineNumbers/delegation.kt index 54bd8d74f74..02f5e0627af 100644 --- a/js/js.translator/testData/lineNumbers/delegation.kt +++ b/js/js.translator/testData/lineNumbers/delegation.kt @@ -18,5 +18,4 @@ val o = object : I { } } -// 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 * 11 11 * 1 1 3 3 1 1 1 1 1 1 1 1 1 * 11 11 12 12 12 16 17 17 15 15 15 * 1 * 11 diff --git a/js/js.translator/testData/lineNumbers/destructuring.kt b/js/js.translator/testData/lineNumbers/destructuring.kt index ac6762254de..0574484a75b 100644 --- a/js/js.translator/testData/lineNumbers/destructuring.kt +++ b/js/js.translator/testData/lineNumbers/destructuring.kt @@ -27,5 +27,5 @@ fun bar(f: (Pair) -> Unit) { } -// 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 1 1 1 1 * 3 3 9 9 4 9 6 9 7 9 11 11 12 12 15 15 25 25 26 26 15 16 15 17 16 18 16 20 20 21 21 22 22 * 1 +// LINES(ClassicFrontend JS_IR): 1 1 1 1 1 1 1 1 * 3 3 9 9 4 9 6 9 7 9 11 11 12 12 15 15 25 25 26 26 15 16 15 17 16 18 16 20 20 21 21 22 22 * 1 +// LINES(FIR JS_IR): 1 1 1 1 1 1 1 1 * 3 3 9 9 4 5 9 6 7 11 11 12 12 15 15 25 25 26 26 15 16 15 17 18 20 20 21 21 22 22 * 1 diff --git a/js/js.translator/testData/lineNumbers/destructuringInline.kt b/js/js.translator/testData/lineNumbers/destructuringInline.kt index 7160162179f..bac0fc81779 100644 --- a/js/js.translator/testData/lineNumbers/destructuringInline.kt +++ b/js/js.translator/testData/lineNumbers/destructuringInline.kt @@ -32,5 +32,5 @@ inline operator fun P.component1() = a inline operator fun P.component2() = b -// 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 1 1 1 1 * 3 3 9 9 4 9 * 6 31 9 * 7 33 9 11 11 12 12 15 15 25 25 26 26 29 29 29 29 29 29 29 29 29 29 29 29 31 31 31 31 33 33 33 33 15 16 15 * 17 31 16 * 18 33 16 20 20 21 21 22 22 * 1 +// LINES(ClassicFrontend JS_IR): 1 1 1 1 1 1 1 1 * 3 3 9 9 4 9 * 6 31 9 * 7 33 9 11 11 12 12 15 15 25 25 26 26 29 29 29 29 29 29 29 29 29 29 29 29 31 31 31 31 33 33 33 33 15 16 15 * 17 31 16 * 18 33 16 20 20 21 21 22 22 * 1 +// LINES(FIR JS_IR): 1 1 1 1 1 1 1 1 * 3 3 9 9 4 5 9 * 6 31 6 * 7 33 7 11 11 12 12 15 15 25 25 26 26 29 29 29 29 29 29 29 29 29 29 29 29 31 31 31 31 33 33 33 33 15 16 15 * 17 31 17 * 18 33 18 20 20 21 21 22 22 * 1 diff --git a/js/js.translator/testData/lineNumbers/doWhileWithComplexCondition.kt b/js/js.translator/testData/lineNumbers/doWhileWithComplexCondition.kt index 47499fd207a..0779f03a35a 100644 --- a/js/js.translator/testData/lineNumbers/doWhileWithComplexCondition.kt +++ b/js/js.translator/testData/lineNumbers/doWhileWithComplexCondition.kt @@ -13,5 +13,4 @@ fun box() { ) } -// 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): 1 1 2 3 3 4 4 * 8 8 8 8 11 11 * 7 12 +// LINES(JS_IR): 1 1 2 3 3 4 4 * 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 2d74b65d780..d697a6f2737 100644 --- a/js/js.translator/testData/lineNumbers/elvis.kt +++ b/js/js.translator/testData/lineNumbers/elvis.kt @@ -9,5 +9,4 @@ fun box(x: String?) { fun foo() = "bar" -// 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 1 1 1 1 * 3 3 4 * 5 5 * 7 7 7 * 5 4 4 10 10 10 10 * 1 diff --git a/js/js.translator/testData/lineNumbers/enumCompanionObject.kt b/js/js.translator/testData/lineNumbers/enumCompanionObject.kt index c61af71a6ca..d01edf02669 100644 --- a/js/js.translator/testData/lineNumbers/enumCompanionObject.kt +++ b/js/js.translator/testData/lineNumbers/enumCompanionObject.kt @@ -6,5 +6,4 @@ enum class Foo { } } -// 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): 4 4 * 5 5 5 5 5 * 1 * 1 1 * 1 * 1 1 +// LINES(JS_IR): 4 4 * 5 5 5 5 5 * 1 * 1 1 * 1 * 1 1 diff --git a/js/js.translator/testData/lineNumbers/enumObject.kt b/js/js.translator/testData/lineNumbers/enumObject.kt index f08043e98fc..06cfac7ed3e 100644 --- a/js/js.translator/testData/lineNumbers/enumObject.kt +++ b/js/js.translator/testData/lineNumbers/enumObject.kt @@ -10,5 +10,4 @@ enum class E { } } -// 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): 4 4 * 5 5 5 * 8 8 * 9 9 9 * 1 * 1 1 * 1 * 1 1 +// LINES(JS_IR): 4 4 * 5 5 5 * 8 8 * 9 9 9 * 1 * 1 1 * 1 * 1 1 diff --git a/js/js.translator/testData/lineNumbers/expressionAsFunctionBody.kt b/js/js.translator/testData/lineNumbers/expressionAsFunctionBody.kt index c4c14551ede..731e8a113ce 100644 --- a/js/js.translator/testData/lineNumbers/expressionAsFunctionBody.kt +++ b/js/js.translator/testData/lineNumbers/expressionAsFunctionBody.kt @@ -4,5 +4,4 @@ fun box() = fun foo() = 23 -// LINES(JS): 1 2 2 4 5 5 // LINES(JS_IR): 1 2 2 2 4 5 5 5 diff --git a/js/js.translator/testData/lineNumbers/for.kt b/js/js.translator/testData/lineNumbers/for.kt index 6027502de84..921175f991f 100644 --- a/js/js.translator/testData/lineNumbers/for.kt +++ b/js/js.translator/testData/lineNumbers/for.kt @@ -17,6 +17,5 @@ fun box() { } } -// 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): 1 1 * 2 2 2 2 2 2 2 2 3 3 6 6 6 6 6 6 6 7 7 10 10 10 10 11 11 14 15 15 15 15 15 15 15 15 16 16 +// LINES(JS_IR): 1 1 * 2 2 2 2 2 2 2 2 3 3 6 6 6 6 6 6 6 7 7 10 10 10 10 11 11 14 15 15 15 15 15 15 15 15 16 16 diff --git a/js/js.translator/testData/lineNumbers/increment.kt b/js/js.translator/testData/lineNumbers/increment.kt index da33f21341e..5d18ce480f4 100644 --- a/js/js.translator/testData/lineNumbers/increment.kt +++ b/js/js.translator/testData/lineNumbers/increment.kt @@ -8,5 +8,4 @@ fun foo(x: Int) { println(y) } -// LINES(JS): 1 9 2 2 3 3 4 4 5 5 6 6 7 7 8 8 -// LINES(JS_IR): 1 1 2 3 3 4 4 5 5 6 6 7 7 8 8 +// LINES(JS_IR): 1 1 2 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 056f45fe17c..0dfd212576c 100644 --- a/js/js.translator/testData/lineNumbers/inlineArguments.kt +++ b/js/js.translator/testData/lineNumbers/inlineArguments.kt @@ -11,5 +11,4 @@ inline fun foo(x: Int) { fun bar() = 23 -// 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 1 1 1 1 * 3 3 * 4 8 8 9 9 7 7 8 8 9 9 12 12 12 12 * 1 diff --git a/js/js.translator/testData/lineNumbers/inlineLocalVarsRef.kt b/js/js.translator/testData/lineNumbers/inlineLocalVarsRef.kt index 79c6bbad6eb..36b593ab34f 100644 --- a/js/js.translator/testData/lineNumbers/inlineLocalVarsRef.kt +++ b/js/js.translator/testData/lineNumbers/inlineLocalVarsRef.kt @@ -9,5 +9,4 @@ fun bar() { foo(42) } -// 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): 1 1 2 3 3 3 4 4 8 8 * 2 9 2 3 3 3 4 4 \ No newline at end of file +// LINES(JS_IR): 1 1 2 3 3 3 4 4 8 8 * 2 9 2 3 3 3 4 4 diff --git a/js/js.translator/testData/lineNumbers/inlineMultiModule/simple.kt b/js/js.translator/testData/lineNumbers/inlineMultiModule/simple.kt index a07a346951b..c967609af65 100644 --- a/js/js.translator/testData/lineNumbers/inlineMultiModule/simple.kt +++ b/js/js.translator/testData/lineNumbers/inlineMultiModule/simple.kt @@ -8,8 +8,7 @@ inline fun foo(x: String) { println("foo2($x);") } -// LINES(JS): 6 6 6 6 6 9 7 7 8 8 -// LINES(JS_IR): 6 6 7 7 8 8 +// LINES(JS_IR): 6 6 7 7 8 8 // MODULE: main(lib) // FILE: main.kt @@ -22,5 +21,4 @@ fun box() { foo("42") } -// LINES(JS): 6 20 23 7 7 21 7 8 8 21 8 7 7 22 7 8 8 22 8 -// LINES(JS_IR): 20 20 * 7 7 8 7 8 8 * 7 7 8 7 8 8 \ No newline at end of file +// LINES(JS_IR): 19 19 * 7 7 8 7 8 8 * 7 7 8 7 8 8 diff --git a/js/js.translator/testData/lineNumbers/inlineReturn.kt b/js/js.translator/testData/lineNumbers/inlineReturn.kt index ce6fbbca423..d257b708b86 100644 --- a/js/js.translator/testData/lineNumbers/inlineReturn.kt +++ b/js/js.translator/testData/lineNumbers/inlineReturn.kt @@ -21,5 +21,4 @@ fun bar(x: Int) { println("%") } -// 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): 1 1 2 2 2 3 3 4 7 7 9 9 9 10 10 11 14 14 16 16 19 19 * 20 * 20 2 2 2 3 3 4 * 7 7 9 9 9 10 10 11 * 14 14 16 16 20 20 21 21 +// LINES(JS_IR): 1 1 2 2 2 3 3 4 7 7 9 9 9 10 10 11 14 14 16 16 19 19 * 20 * 20 2 2 2 3 3 4 * 7 7 9 9 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 df3a1542c14..a39df69caa3 100644 --- a/js/js.translator/testData/lineNumbers/inlining.kt +++ b/js/js.translator/testData/lineNumbers/inlining.kt @@ -11,5 +11,4 @@ inline fun bar() { println("bar2") } -// 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): 1 1 2 2 * 10 10 11 11 4 4 * 10 10 11 11 6 6 9 9 10 10 11 11 +// LINES(JS_IR): 1 1 2 2 * 10 10 11 11 4 4 * 10 10 11 11 6 6 9 9 10 10 11 11 diff --git a/js/js.translator/testData/lineNumbers/inliningWithLambda.kt b/js/js.translator/testData/lineNumbers/inliningWithLambda.kt index ff7f4767076..746b465cb31 100644 --- a/js/js.translator/testData/lineNumbers/inliningWithLambda.kt +++ b/js/js.translator/testData/lineNumbers/inliningWithLambda.kt @@ -16,5 +16,4 @@ inline fun foo(f: () -> Unit) { println("after") } -// 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): 1 1 2 2 * 14 14 * 4 4 16 16 6 6 * 14 14 * 8 8 16 16 10 10 13 13 14 14 15 15 16 16 +// LINES(JS_IR): 1 1 2 2 * 14 14 * 4 4 16 16 6 6 * 14 14 * 8 8 16 16 10 10 13 13 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 5312a36abad..7c0b7d884ed 100644 --- a/js/js.translator/testData/lineNumbers/innerClass.kt +++ b/js/js.translator/testData/lineNumbers/innerClass.kt @@ -6,5 +6,4 @@ class A(val x: Int) { } } -// LINES(JS): 1 1 2 2 3 5 4 4 -// LINES(JS_IR): 2 2 2 2 3 4 4 1 1 1 1 1 1 1 +// LINES(JS_IR): 2 2 2 2 3 4 4 1 1 1 1 1 1 1 diff --git a/js/js.translator/testData/lineNumbers/isOperator.kt b/js/js.translator/testData/lineNumbers/isOperator.kt index e002aef7c28..8b0a01f5557 100644 --- a/js/js.translator/testData/lineNumbers/isOperator.kt +++ b/js/js.translator/testData/lineNumbers/isOperator.kt @@ -11,5 +11,4 @@ inline fun foo(): Boolean { return true } -// 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 1 1 1 1 * 3 3 * 4 4 * 10 10 11 4 4 4 5 5 9 9 10 10 11 11 * 1 +// LINES(JS_IR): 1 1 1 1 1 1 1 1 * 3 3 * 4 4 * 10 10 11 4 4 4 5 5 9 9 10 10 11 11 * 1 diff --git a/js/js.translator/testData/lineNumbers/jsCode.kt b/js/js.translator/testData/lineNumbers/jsCode.kt index 3fac7b4cfd7..980f568fcf9 100644 --- a/js/js.translator/testData/lineNumbers/jsCode.kt +++ b/js/js.translator/testData/lineNumbers/jsCode.kt @@ -5,7 +5,4 @@ fun foo() { println("after: $x") } -// DONT_TARGET_EXACT_BACKEND: JS_IR -// ^There is a better stepping test - -// LINES(JS): 1 6 2 2 3 3 4 4 5 5 +// LINES(JS_IR): 1 1 2 3 3 4 4 5 5 diff --git a/js/js.translator/testData/lineNumbers/lambdaWithClosure.kt b/js/js.translator/testData/lineNumbers/lambdaWithClosure.kt index 22296430170..8ba81285764 100644 --- a/js/js.translator/testData/lineNumbers/lambdaWithClosure.kt +++ b/js/js.translator/testData/lineNumbers/lambdaWithClosure.kt @@ -4,5 +4,4 @@ fun foo(x: Int): () -> Unit = { fun bar() = 23 -// LINES(JS): 1 1 1 3 2 2 3 3 1 1 1 5 5 5 -// LINES(JS_IR): 1 1 3 3 1 5 5 5 5 1 1 1 2 2 3 3 +// LINES(JS_IR): 1 1 3 3 1 5 5 5 5 1 1 1 2 2 3 3 diff --git a/js/js.translator/testData/lineNumbers/lastExpressionInInlineLambda.kt b/js/js.translator/testData/lineNumbers/lastExpressionInInlineLambda.kt index 815a0c2679e..134af365ced 100644 --- a/js/js.translator/testData/lineNumbers/lastExpressionInInlineLambda.kt +++ b/js/js.translator/testData/lineNumbers/lastExpressionInInlineLambda.kt @@ -24,5 +24,4 @@ fun baz() = "baz" fun boo() = "boo" -// 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): 1 1 * 4 * 6 7 * 13 12 13 19 19 20 20 23 23 23 23 25 25 25 25 +// LINES(JS_IR): 1 1 * 4 * 6 7 * 13 12 13 19 19 20 20 23 23 23 23 25 25 25 25 diff --git a/js/js.translator/testData/lineNumbers/literals.kt b/js/js.translator/testData/lineNumbers/literals.kt index dc1bd2cde69..6ecfd2fca41 100644 --- a/js/js.translator/testData/lineNumbers/literals.kt +++ b/js/js.translator/testData/lineNumbers/literals.kt @@ -26,5 +26,4 @@ fun bar(vararg x: Any?) { println(x) } -// 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): 1 1 2 3 4 5 6 7 8 9 10 13 14 15 16 17 18 19 20 25 25 26 26 +// LINES(JS_IR): 1 1 2 3 4 5 6 7 8 9 10 13 14 15 16 17 18 19 20 25 25 26 26 diff --git a/js/js.translator/testData/lineNumbers/longLiteral.kt b/js/js.translator/testData/lineNumbers/longLiteral.kt index a09c7180cd4..9a5f0a39915 100644 --- a/js/js.translator/testData/lineNumbers/longLiteral.kt +++ b/js/js.translator/testData/lineNumbers/longLiteral.kt @@ -5,5 +5,4 @@ fun foo() { 0L) } -// LINES(JS): 3 * 5 1 6 2 4 -// LINES(JS_IR): 1 1 2 3 4 5 +// LINES(JS_IR): 1 1 2 3 4 5 diff --git a/js/js.translator/testData/lineNumbers/memberFunWithDefaultParam.kt b/js/js.translator/testData/lineNumbers/memberFunWithDefaultParam.kt index a0dae298a4d..f50d8457457 100644 --- a/js/js.translator/testData/lineNumbers/memberFunWithDefaultParam.kt +++ b/js/js.translator/testData/lineNumbers/memberFunWithDefaultParam.kt @@ -10,5 +10,4 @@ class B : A() { } } -// LINES(JS): 1 2 2 2 2 2 2 2 2 2 4 4 4 * 7 7 8 10 9 9 -// LINES(JS_IR): 1 1 2 2 2 2 2 * 4 4 4 7 7 7 8 9 9 +// LINES(JS_IR): 1 1 2 2 2 2 2 * 4 4 4 7 7 7 8 9 9 diff --git a/js/js.translator/testData/lineNumbers/multipleReferences.kt b/js/js.translator/testData/lineNumbers/multipleReferences.kt index 5edcf30acff..4214b4593b0 100644 --- a/js/js.translator/testData/lineNumbers/multipleReferences.kt +++ b/js/js.translator/testData/lineNumbers/multipleReferences.kt @@ -12,5 +12,4 @@ object O { val y = 23 } -// 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): 1 1 2 2 3 3 4 4 6 6 7 7 8 8 11 11 * 12 12 12 12 12 +// LINES(JS_IR): 1 1 2 2 3 3 4 4 6 6 7 7 8 8 11 11 * 12 12 12 12 12 diff --git a/js/js.translator/testData/lineNumbers/objectInstanceFunction.kt b/js/js.translator/testData/lineNumbers/objectInstanceFunction.kt index 19e9f410297..f53192a0c89 100644 --- a/js/js.translator/testData/lineNumbers/objectInstanceFunction.kt +++ b/js/js.translator/testData/lineNumbers/objectInstanceFunction.kt @@ -4,5 +4,4 @@ fun foo() { println("foo") } -// LINES(JS): 1 1 * 1 1 1 1 1 1 3 5 4 4 -// LINES(JS_IR): 1 1 * 3 3 4 4 +// LINES(JS_IR): 1 1 * 3 3 4 4 diff --git a/js/js.translator/testData/lineNumbers/optionalArgs.kt b/js/js.translator/testData/lineNumbers/optionalArgs.kt index f892be037b5..1cace104f84 100644 --- a/js/js.translator/testData/lineNumbers/optionalArgs.kt +++ b/js/js.translator/testData/lineNumbers/optionalArgs.kt @@ -7,5 +7,4 @@ fun box( println(y) } -// LINES(JS): 1 8 2 2 2 2 3 3 3 4 6 6 7 7 -// LINES(JS_IR): 1 2 3 5 2 4 6 6 7 7 +// LINES(JS_IR): 1 2 3 5 2 4 6 6 7 7 diff --git a/js/js.translator/testData/lineNumbers/propertyWithoutInitializer.kt b/js/js.translator/testData/lineNumbers/propertyWithoutInitializer.kt index 3a2be9c76cd..ef6931eacde 100644 --- a/js/js.translator/testData/lineNumbers/propertyWithoutInitializer.kt +++ b/js/js.translator/testData/lineNumbers/propertyWithoutInitializer.kt @@ -1,13 +1,14 @@ -open class A { +abstract class A { val x: Int - open val y: Int + abstract val y: Int init { x = 23 - y = 42 } + } -// LINES(JS): 1 2 4 7 7 8 8 4 4 4 -// LINES(JS_IR): 1 1 7 7 8 8 2 2 2 4 4 4 +class B(override val y: Int): A() + +// LINES(JS_IR): 1 1 7 7 2 2 2 12 12 12 12 12 12 12 12 diff --git a/js/js.translator/testData/lineNumbers/simple.kt b/js/js.translator/testData/lineNumbers/simple.kt index 069e71dfb89..ef9f1a96e83 100644 --- a/js/js.translator/testData/lineNumbers/simple.kt +++ b/js/js.translator/testData/lineNumbers/simple.kt @@ -3,5 +3,4 @@ fun box() { println("bar") } -// LINES(JS): 1 4 2 2 3 3 -// LINES(JS_IR): 1 1 2 2 3 3 +// LINES(JS_IR): 1 1 2 2 3 3 diff --git a/js/js.translator/testData/lineNumbers/stringLiteral.kt b/js/js.translator/testData/lineNumbers/stringLiteral.kt index 2e1e9496f72..bcab8508306 100644 --- a/js/js.translator/testData/lineNumbers/stringLiteral.kt +++ b/js/js.translator/testData/lineNumbers/stringLiteral.kt @@ -4,5 +4,4 @@ fun box(x: Int): String { "suffix" } -// LINES(JS): 1 5 2 2 3 4 -// LINES(JS_IR): 1 1 2 2 3 4 +// LINES(JS_IR): 1 1 2 2 3 4 diff --git a/js/js.translator/testData/lineNumbers/syntheticCodeInConstructors.kt b/js/js.translator/testData/lineNumbers/syntheticCodeInConstructors.kt index ad4ef730662..3996b4b68a4 100644 --- a/js/js.translator/testData/lineNumbers/syntheticCodeInConstructors.kt +++ b/js/js.translator/testData/lineNumbers/syntheticCodeInConstructors.kt @@ -25,5 +25,4 @@ class C : A { ) } -// 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): 1 1 * 3 * 7 7 9 9 10 11 15 15 16 17 15 19 * 15 15 * 22 23 24 23 * 22 * 14 +// LINES(JS_IR): 1 1 * 3 * 7 7 9 9 10 11 15 15 16 17 15 19 * 15 15 * 22 23 24 23 * 22 * 14 diff --git a/js/js.translator/testData/lineNumbers/syntheticCodeInEnums.kt b/js/js.translator/testData/lineNumbers/syntheticCodeInEnums.kt index 62d017a68a8..8984ab918ad 100644 --- a/js/js.translator/testData/lineNumbers/syntheticCodeInEnums.kt +++ b/js/js.translator/testData/lineNumbers/syntheticCodeInEnums.kt @@ -8,5 +8,4 @@ enum class E { } } -// 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): 4 4 * 6 6 * 1 * 1 1 * 1 * 1 1 +// LINES(JS_IR): 4 4 * 6 6 * 1 * 1 1 * 1 * 1 1 diff --git a/js/js.translator/testData/lineNumbers/valParameter.kt b/js/js.translator/testData/lineNumbers/valParameter.kt index e978e21cc1a..a1f3299c734 100644 --- a/js/js.translator/testData/lineNumbers/valParameter.kt +++ b/js/js.translator/testData/lineNumbers/valParameter.kt @@ -7,5 +7,4 @@ fun foo() { A(23, "foo") } -// LINES(JS): 1 2 3 * 6 8 7 7 -// LINES(JS_IR): 1 2 3 1 2 2 3 3 2 2 2 3 3 3 6 6 7 7 +// LINES(JS_IR): 1 2 3 1 2 2 3 3 2 2 2 3 3 3 6 6 7 7 diff --git a/js/js.translator/testData/lineNumbers/whenEntryWithMultipleConditions.kt b/js/js.translator/testData/lineNumbers/whenEntryWithMultipleConditions.kt index c5455df4132..1a29c001757 100644 --- a/js/js.translator/testData/lineNumbers/whenEntryWithMultipleConditions.kt +++ b/js/js.translator/testData/lineNumbers/whenEntryWithMultipleConditions.kt @@ -18,5 +18,5 @@ fun box(x: Int) { ) } -// LINES(JS): 1 19 4 4 3 3 4 6 9 9 6 11 13 13 11 16 16 3 2 -// LINES(JS_IR): 1 1 2 8 7 6 4 6 7 4 7 8 4 8 9 12 11 4 11 12 4 12 13 16 +// LINES(ClassicFrontend JS_IR): 1 1 2 8 7 6 4 6 7 4 7 8 4 8 9 12 11 4 11 12 4 12 13 16 +// LINES(FIR JS_IR): 1 1 2 6 4 6 7 4 7 8 4 8 9 11 4 11 12 4 12 13 16 diff --git a/js/js.translator/testData/lineNumbers/whenEntryWithMultipleConditionsNonOptimized.kt b/js/js.translator/testData/lineNumbers/whenEntryWithMultipleConditionsNonOptimized.kt index a641b9370da..de4595669e0 100644 --- a/js/js.translator/testData/lineNumbers/whenEntryWithMultipleConditionsNonOptimized.kt +++ b/js/js.translator/testData/lineNumbers/whenEntryWithMultipleConditionsNonOptimized.kt @@ -28,5 +28,5 @@ fun four() = 4 fun five() = 5 -// 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): 1 1 2 8 7 6 4 6 7 4 7 8 4 8 9 12 11 4 11 12 4 12 13 16 21 21 21 21 23 23 23 23 25 25 25 25 27 27 27 27 29 29 29 29 +// LINES(ClassicFrontend JS_IR): 1 1 2 8 7 6 4 6 7 4 7 8 4 8 9 12 11 4 11 12 4 12 13 16 21 21 21 21 23 23 23 23 25 25 25 25 27 27 27 27 29 29 29 29 +// LINES(FIR JS_IR): 1 1 2 6 4 6 7 4 7 8 4 8 9 11 4 11 12 4 12 13 16 21 21 21 21 23 23 23 23 25 25 25 25 27 27 27 27 29 29 29 29 diff --git a/js/js.translator/testData/lineNumbers/whenIn.kt b/js/js.translator/testData/lineNumbers/whenIn.kt index 6ec1e64f0da..d80b7869375 100644 --- a/js/js.translator/testData/lineNumbers/whenIn.kt +++ b/js/js.translator/testData/lineNumbers/whenIn.kt @@ -13,5 +13,4 @@ fun foo(): Int = 23 fun bar(): IntRange = 1000..2000 -// 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): 1 1 2 3 3 4 4 5 5 6 6 7 7 7 7 8 8 12 12 12 12 14 14 14 14 +// LINES(JS_IR): 1 1 2 3 3 4 4 5 5 6 6 7 7 7 7 8 8 12 12 12 12 14 14 14 14 diff --git a/js/js.translator/testData/lineNumbers/whenIs.kt b/js/js.translator/testData/lineNumbers/whenIs.kt index d4945ca8377..a290176fbc9 100644 --- a/js/js.translator/testData/lineNumbers/whenIs.kt +++ b/js/js.translator/testData/lineNumbers/whenIs.kt @@ -13,5 +13,4 @@ open class A open class B : A() -// LINES(JS): 1 10 2 2 2 2 3 3 4 4 5 5 6 6 8 8 12 * 14 14 -// LINES(JS_IR): 1 1 2 3 3 4 4 5 5 6 6 8 8 12 12 14 14 14 +// LINES(JS_IR): 1 1 2 3 3 4 4 5 5 6 6 8 8 12 12 14 14 14 diff --git a/js/js.translator/testData/lineNumbers/whileWithComplexCondition.kt b/js/js.translator/testData/lineNumbers/whileWithComplexCondition.kt index b9ebdaa980b..eca2372fca2 100644 --- a/js/js.translator/testData/lineNumbers/whileWithComplexCondition.kt +++ b/js/js.translator/testData/lineNumbers/whileWithComplexCondition.kt @@ -12,5 +12,4 @@ fun box() { } } -// LINES(JS): 1 13 5 5 4 2 2 3 5 5 8 8 * 3 4 9 3 11 11 -// LINES(JS_IR): 1 1 2 * 3 * 5 5 5 5 8 8 * 4 9 * 11 11 +// LINES(JS_IR): 1 1 2 * 3 * 5 5 5 5 8 8 * 4 9 * 11 11