diff --git a/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/transformers/irToJs/jsAstUtils.kt b/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/transformers/irToJs/jsAstUtils.kt index fb42dd62331..cacc7350a10 100644 --- a/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/transformers/irToJs/jsAstUtils.kt +++ b/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/transformers/irToJs/jsAstUtils.kt @@ -13,10 +13,7 @@ import org.jetbrains.kotlin.ir.backend.js.JsIrBackendContext import org.jetbrains.kotlin.ir.backend.js.JsStatementOrigins import org.jetbrains.kotlin.ir.backend.js.sourceMapsInfo import org.jetbrains.kotlin.ir.backend.js.utils.* -import org.jetbrains.kotlin.ir.declarations.IrClass -import org.jetbrains.kotlin.ir.declarations.IrDeclaration -import org.jetbrains.kotlin.ir.declarations.IrFunction -import org.jetbrains.kotlin.ir.declarations.IrSimpleFunction +import org.jetbrains.kotlin.ir.declarations.* import org.jetbrains.kotlin.ir.expressions.* import org.jetbrains.kotlin.ir.symbols.IrFunctionSymbol import org.jetbrains.kotlin.ir.util.* @@ -24,6 +21,7 @@ import org.jetbrains.kotlin.ir.visitors.acceptChildrenVoid import org.jetbrains.kotlin.ir.visitors.acceptVoid import org.jetbrains.kotlin.js.backend.ast.* import org.jetbrains.kotlin.js.common.isValidES5Identifier +import org.jetbrains.kotlin.js.config.SourceMapNamesPolicy import org.jetbrains.kotlin.js.config.SourceMapSourceEmbedding import org.jetbrains.kotlin.util.OperatorNameConventions import org.jetbrains.kotlin.utils.addIfNotNull @@ -119,6 +117,7 @@ fun translateFunction(declaration: IrFunction, name: JsName?, context: JsGenerat val body = declaration.body?.accept(IrElementToJsStatementTransformer(), functionContext) as? JsBlock ?: JsBlock() val function = JsFunction(emptyScope, body, "member function ${name ?: "annon"}") + .withSource(declaration, context, useNameOf = declaration) function.name = name @@ -522,16 +521,18 @@ object JsAstUtils { } } -internal fun T.withSource(node: IrElement, context: JsGenerationContext, originalName: String? = null): T { - addSourceInfoIfNeed(node, context, originalName) +internal fun T.withSource(node: IrElement, context: JsGenerationContext, useNameOf: IrDeclarationWithName? = null): T { + addSourceInfoIfNeed(node, context, useNameOf) return this } @Suppress("NOTHING_TO_INLINE") -private inline fun T.addSourceInfoIfNeed(node: IrElement, context: JsGenerationContext, originalName: String?) { +private inline fun T.addSourceInfoIfNeed(node: IrElement, context: JsGenerationContext, useNameOf: IrDeclarationWithName?) { val sourceMapsInfo = context.staticContext.backendContext.sourceMapsInfo ?: return + val originalName = useNameOf?.originalNameForUseInSourceMap(sourceMapsInfo.namesPolicy) + val location = context.getLocationForIrElement(node, originalName) ?: return val isNodeFromCurrentModule = context.currentFile.module.descriptor == context.staticContext.backendContext.module @@ -579,3 +580,22 @@ fun IrElement.getSourceInfo(fileEntry: IrFileEntry): JsLocation? { val startColumn = fileEntry.getColumnNumber(startOffset) return JsLocation(path, startLine, startColumn) } + +/** + * Returns a name of the original Kotlin declaration, or null, if it is a compiler generated declaration. + */ +private fun IrDeclarationWithName.originalNameForUseInSourceMap(policy: SourceMapNamesPolicy): String? { + if (policy == SourceMapNamesPolicy.NO) return null + when (this) { + is IrField -> correspondingPropertySymbol?.let { + return it.owner.originalNameForUseInSourceMap(policy) + } + + is IrFunction -> if (policy == SourceMapNamesPolicy.FULLY_QUALIFIED_NAMES) { + fqNameWhenAvailable?.let { + return it.asString() + } + } + } + return name.asString() +} diff --git a/compiler/testData/debug/stepping/anonymousFunction.kt b/compiler/testData/debug/stepping/anonymousFunction.kt index 162e5423391..ee25c7e5faa 100644 --- a/compiler/testData/debug/stepping/anonymousFunction.kt +++ b/compiler/testData/debug/stepping/anonymousFunction.kt @@ -18,5 +18,5 @@ fun box() { // EXPECTATIONS JS_IR // test.kt:6 box -// test.kt:3 eval_0 -// test.kt:7 box$lambda +// test.kt:3 eval +// test.kt:7 box$lambda \ No newline at end of file diff --git a/compiler/testData/debug/stepping/callWithReceiver.kt b/compiler/testData/debug/stepping/callWithReceiver.kt index bc7e2f01d2b..53cfc302796 100644 --- a/compiler/testData/debug/stepping/callWithReceiver.kt +++ b/compiler/testData/debug/stepping/callWithReceiver.kt @@ -30,5 +30,5 @@ fun box() { // EXPECTATIONS JS_IR // test.kt:9 box // test.kt:11 box -// test.kt:4 protoOf.foo_26di_k$ +// test.kt:4 foo // test.kt:5 box \ No newline at end of file diff --git a/compiler/testData/debug/stepping/callableReference.kt b/compiler/testData/debug/stepping/callableReference.kt index f98f9d2bb66..f996b9dc705 100644 --- a/compiler/testData/debug/stepping/callableReference.kt +++ b/compiler/testData/debug/stepping/callableReference.kt @@ -23,6 +23,7 @@ fun f(block: () -> Unit) { // EXPECTATIONS JS_IR // test.kt:3 box // test.kt:4 box +// test.kt:4 box$lambda // test.kt:4 box // test.kt:10 f -// test.kt:5 +// test.kt:5 box$lambda$lambda \ No newline at end of file diff --git a/compiler/testData/debug/stepping/chainCall.kt b/compiler/testData/debug/stepping/chainCall.kt index cf06021120c..86d1f046936 100644 --- a/compiler/testData/debug/stepping/chainCall.kt +++ b/compiler/testData/debug/stepping/chainCall.kt @@ -32,9 +32,9 @@ fun box() { // EXPECTATIONS JS_IR // test.kt:9 box // test.kt:10 box -// test.kt:4 protoOf.foo_26di_k$ +// test.kt:4 foo // test.kt:11 box -// test.kt:4 protoOf.foo_26di_k$ +// test.kt:4 foo // test.kt:5 box // test.kt:13 box -// test.kt:5 box +// test.kt:5 box \ No newline at end of file diff --git a/compiler/testData/debug/stepping/class.kt b/compiler/testData/debug/stepping/class.kt index 0a234d36b9f..5efb80a9779 100644 --- a/compiler/testData/debug/stepping/class.kt +++ b/compiler/testData/debug/stepping/class.kt @@ -36,5 +36,5 @@ fun box() { // EXPECTATIONS JS_IR // test.kt:12 box -// test.kt:4 A -// test.kt:14 box +// test.kt:4 +// test.kt:14 box \ No newline at end of file diff --git a/compiler/testData/debug/stepping/classObject.kt b/compiler/testData/debug/stepping/classObject.kt index bbb0295d934..78606ed1885 100644 --- a/compiler/testData/debug/stepping/classObject.kt +++ b/compiler/testData/debug/stepping/classObject.kt @@ -40,9 +40,9 @@ fun box() { // EXPECTATIONS JS_IR // test.kt:14 box -// test.kt:5 Companion_19 -// test.kt:6 Companion_19 +// test.kt:5 +// test.kt:6 // test.kt:15 box // test.kt:16 box // test.kt:16 box -// test.kt:8 protoOf.foo_26di_k$ \ No newline at end of file +// test.kt:8 foo \ No newline at end of file diff --git a/compiler/testData/debug/stepping/constructorCall.kt b/compiler/testData/debug/stepping/constructorCall.kt index ccc9580ca42..265233b076e 100644 --- a/compiler/testData/debug/stepping/constructorCall.kt +++ b/compiler/testData/debug/stepping/constructorCall.kt @@ -34,10 +34,10 @@ fun box() { // EXPECTATIONS JS_IR // test.kt:6 box -// test.kt:3 A +// test.kt:3 // test.kt:7 box -// test.kt:3 A +// test.kt:3 // test.kt:10 box -// test.kt:3 A +// test.kt:3 // test.kt:12 box -// test.kt:3 A +// test.kt:3 \ No newline at end of file diff --git a/compiler/testData/debug/stepping/constructors.kt b/compiler/testData/debug/stepping/constructors.kt index a8fc3ac02a7..336704c2639 100644 --- a/compiler/testData/debug/stepping/constructors.kt +++ b/compiler/testData/debug/stepping/constructors.kt @@ -188,7 +188,7 @@ class O(i: T) { // EXPECTATIONS JS_IR // test.kt:4 box // test.kt:5 box -// test.kt:20 C +// test.kt:20 // test.kt:6 box // test.kt:22 D_init_$Init$ // test.kt:7 box @@ -200,10 +200,10 @@ class O(i: T) { // test.kt:33 G_init_$Init$ // test.kt:34 G_init_$Init$ // test.kt:10 box -// test.kt:39 J +// test.kt:39 // test.kt:11 box -// test.kt:42 K -// test.kt:44 K +// test.kt:42 +// test.kt:44 // test.kt:12 box // test.kt:48 L_init_$Init$ // test.kt:53 L @@ -218,4 +218,4 @@ class O(i: T) { // test.kt:66 N_init_$Init$ // test.kt:15 box // test.kt:16 box -// test.kt:73 O_init_$Init$ +// test.kt:73 O_init_$Init$ \ No newline at end of file diff --git a/compiler/testData/debug/stepping/dataClass.kt b/compiler/testData/debug/stepping/dataClass.kt index ebe9643f749..42270738568 100644 --- a/compiler/testData/debug/stepping/dataClass.kt +++ b/compiler/testData/debug/stepping/dataClass.kt @@ -62,53 +62,53 @@ fun box() { // EXPECTATIONS JS_IR // test.kt:13 box -// test.kt:3 D -// test.kt:3 D +// test.kt:3 +// test.kt:3 // test.kt:14 box -// test.kt:3 D -// test.kt:3 D +// test.kt:3 +// test.kt:3 // test.kt:14 box -// test.kt:1 protoOf.equals -// test.kt:1 protoOf.equals -// test.kt:1 protoOf.equals -// test.kt:1 protoOf.equals -// test.kt:1 protoOf.equals -// test.kt:1 protoOf.equals +// test.kt:1 equals +// test.kt:1 equals +// test.kt:1 equals +// test.kt:1 equals +// test.kt:1 equals +// test.kt:1 equals // test.kt:15 box -// test.kt:1 protoOf.hashCode -// test.kt:1 protoOf.hashCode +// test.kt:1 hashCode +// test.kt:1 hashCode // test.kt:16 box -// test.kt:1 protoOf.toString +// test.kt:1 toString // test.kt:17 box // test.kt:17 box -// test.kt:1 protoOf.component1_7eebsc_k$ +// test.kt:1 component1 // test.kt:17 box -// test.kt:1 protoOf.component2_7eebsb_k$ +// test.kt:1 component2 // test.kt:18 box -// test.kt:1 protoOf.copy$default_roih85_k$ -// test.kt:1 protoOf.copy$default_roih85_k$ -// test.kt:1 protoOf.copy$default_roih85_k$ -// test.kt:1 protoOf.copy_t8q04r_k$ -// test.kt:3 D -// test.kt:3 D +// test.kt:1 copy$default +// test.kt:1 copy$default +// test.kt:1 copy$default +// test.kt:1 copy +// test.kt:3 +// test.kt:3 // test.kt:19 box -// test.kt:5 E -// test.kt:5 E +// test.kt:5 +// test.kt:5 // test.kt:20 box -// test.kt:5 E -// test.kt:5 E +// test.kt:5 +// test.kt:5 // test.kt:20 box -// test.kt:7 protoOf.equals +// test.kt:7 equals // test.kt:21 box -// test.kt:8 protoOf.hashCode +// test.kt:8 hashCode // test.kt:22 box -// test.kt:6 protoOf.toString +// test.kt:6 toString // test.kt:23 box // test.kt:23 box -// test.kt:1 protoOf.component1_7eebsc_k$ +// test.kt:1 component1 // test.kt:23 box -// test.kt:1 protoOf.component2_7eebsb_k$ +// test.kt:1 component2 // test.kt:24 box -// test.kt:9 protoOf.copy_1tks5_k$ -// test.kt:5 E -// test.kt:5 E +// test.kt:9 copy +// test.kt:5 +// test.kt:5 \ No newline at end of file diff --git a/compiler/testData/debug/stepping/defaultParameter.kt b/compiler/testData/debug/stepping/defaultParameter.kt index ec28930b762..4db4d45c0ea 100644 --- a/compiler/testData/debug/stepping/defaultParameter.kt +++ b/compiler/testData/debug/stepping/defaultParameter.kt @@ -26,8 +26,8 @@ fun box() { // EXPECTATIONS JS_IR // test.kt:11 box // test.kt:11 box -// test.kt:6 protoOf.foo$default_ourpn2_k$ -// test.kt:4 protoOf.computeParam_vubdyi_k$ -// test.kt:6 protoOf.foo$default_ourpn2_k$ -// test.kt:6 protoOf.foo$default_ourpn2_k$ -// test.kt:6 protoOf.foo$default_ourpn2_k$ \ No newline at end of file +// test.kt:6 foo$default +// test.kt:4 computeParam +// test.kt:6 foo$default +// test.kt:6 foo$default +// test.kt:6 foo$default \ No newline at end of file diff --git a/compiler/testData/debug/stepping/enum.kt b/compiler/testData/debug/stepping/enum.kt index b0958718d3e..13cbef7e037 100644 --- a/compiler/testData/debug/stepping/enum.kt +++ b/compiler/testData/debug/stepping/enum.kt @@ -54,11 +54,12 @@ fun box() { // EXPECTATIONS JS_IR // test.kt:22 box -// test.kt:11 E -// test.kt:11 E +// test.kt:11 +// test.kt:11 // test.kt:22 box -// test.kt:9 protoOf.foo_26di_k$ +// test.kt:9 foo +// test.kt:7 E$foo$lambda // test.kt:15 E2_initEntries -// test.kt:14 E2 +// test.kt:14 // test.kt:17 E2_initEntries -// test.kt:14 E2 +// test.kt:14 \ No newline at end of file diff --git a/compiler/testData/debug/stepping/functionCallWithLambdaParam.kt b/compiler/testData/debug/stepping/functionCallWithLambdaParam.kt index e28048c8d5d..9f62f376a91 100644 --- a/compiler/testData/debug/stepping/functionCallWithLambdaParam.kt +++ b/compiler/testData/debug/stepping/functionCallWithLambdaParam.kt @@ -35,4 +35,4 @@ fun foo(f: () -> Unit) { // test.kt:5 box$lambda // test.kt:8 box // test.kt:14 foo -// test.kt:9 box$lambda_0 +// test.kt:9 box$lambda \ No newline at end of file diff --git a/compiler/testData/debug/stepping/initBlocks.kt b/compiler/testData/debug/stepping/initBlocks.kt index ce46d53b431..456445f43ff 100644 --- a/compiler/testData/debug/stepping/initBlocks.kt +++ b/compiler/testData/debug/stepping/initBlocks.kt @@ -109,18 +109,18 @@ fun box() { // EXPECTATIONS JS_IR // test.kt:48 box -// test.kt:7 Foo +// test.kt:7 // test.kt:45 x // test.kt:49 box -// test.kt:13 Bar -// test.kt:17 Bar +// test.kt:13 +// test.kt:17 // test.kt:50 box -// test.kt:23 Boo -// test.kt:26 Boo +// test.kt:23 +// test.kt:26 // test.kt:45 x -// test.kt:29 Boo +// test.kt:29 // test.kt:51 box -// test.kt:34 Zoo -// test.kt:36 Zoo -// test.kt:39 Zoo -// test.kt:42 Zoo +// test.kt:34 +// test.kt:36 +// test.kt:39 +// test.kt:42 \ No newline at end of file diff --git a/compiler/testData/debug/stepping/initBlocksCompanion.kt b/compiler/testData/debug/stepping/initBlocksCompanion.kt index f650be90095..5779e7e6342 100644 --- a/compiler/testData/debug/stepping/initBlocksCompanion.kt +++ b/compiler/testData/debug/stepping/initBlocksCompanion.kt @@ -54,10 +54,10 @@ fun box() { // EXPECTATIONS JS_IR // test.kt:29 box -// test.kt:8 Companion_19 -// test.kt:11 Companion_19 +// test.kt:8 +// test.kt:11 // test.kt:26 x -// test.kt:13 Companion_19 -// test.kt:16 Companion_19 -// test.kt:21 Companion_19 -// test.kt:30 box +// test.kt:13 +// test.kt:16 +// test.kt:21 +// test.kt:30 box \ No newline at end of file diff --git a/compiler/testData/debug/stepping/kt29179.kt b/compiler/testData/debug/stepping/kt29179.kt index 379a5b092e6..4da15be69d6 100644 --- a/compiler/testData/debug/stepping/kt29179.kt +++ b/compiler/testData/debug/stepping/kt29179.kt @@ -27,5 +27,5 @@ fun box() { // EXPECTATIONS JS_IR // test.kt:15 box -// test.kt:5 A -// test.kt:15 box +// test.kt:5 +// test.kt:15 box \ No newline at end of file diff --git a/compiler/testData/debug/stepping/kt42208c.kt b/compiler/testData/debug/stepping/kt42208c.kt index b0985a76e3c..9a115331a0d 100644 --- a/compiler/testData/debug/stepping/kt42208c.kt +++ b/compiler/testData/debug/stepping/kt42208c.kt @@ -45,4 +45,4 @@ fun baz(v:(() -> Unit)) { // test.kt:5 box // test.kt:6 box // test3.kt:14 baz -// test1.kt:8 box$lambda_0 +// test1.kt:8 box$lambda \ No newline at end of file diff --git a/compiler/testData/debug/stepping/namedCallableReference.kt b/compiler/testData/debug/stepping/namedCallableReference.kt index 487c30c982a..0e9bd69a44b 100644 --- a/compiler/testData/debug/stepping/namedCallableReference.kt +++ b/compiler/testData/debug/stepping/namedCallableReference.kt @@ -32,7 +32,8 @@ fun g() {} // EXPECTATIONS JS_IR // test.kt:3 box // test.kt:4 box +// test.kt:4 g$ref // test.kt:4 box // test.kt:8 f -// test.kt:4 l -// test.kt:4 l +// test.kt:4 g$ref$lambda +// test.kt:4 g$ref$lambda \ No newline at end of file diff --git a/compiler/testData/debug/stepping/propertyAccessor.kt b/compiler/testData/debug/stepping/propertyAccessor.kt index 27937b4de41..cdfab7f7aba 100644 --- a/compiler/testData/debug/stepping/propertyAccessor.kt +++ b/compiler/testData/debug/stepping/propertyAccessor.kt @@ -22,4 +22,4 @@ fun box() { // EXPECTATIONS JS_IR // test.kt:11 box // test.kt:11 box -// test.kt:6 protoOf.get_prop_wosl9o_k$ \ No newline at end of file +// test.kt:6 \ No newline at end of file diff --git a/compiler/testData/debug/stepping/suspendFunWithLambdaParameter.kt b/compiler/testData/debug/stepping/suspendFunWithLambdaParameter.kt index bad906369f6..851d401dfed 100644 --- a/compiler/testData/debug/stepping/suspendFunWithLambdaParameter.kt +++ b/compiler/testData/debug/stepping/suspendFunWithLambdaParameter.kt @@ -19,7 +19,7 @@ suspend fun box() { // test.kt:11 box // EXPECTATIONS JS_IR -// test.kt:8 protoOf.doResume_5yljmg_k$ +// test.kt:8 doResume // test.kt:4 foo // test.kt:4 foo -// test.kt:9 box$lambda +// test.kt:9 box$lambda \ No newline at end of file diff --git a/js/js.ast/src/org/jetbrains/kotlin/js/backend/JsToStringGenerationVisitor.java b/js/js.ast/src/org/jetbrains/kotlin/js/backend/JsToStringGenerationVisitor.java index 2d5318478f0..99a4c391ab4 100644 --- a/js/js.ast/src/org/jetbrains/kotlin/js/backend/JsToStringGenerationVisitor.java +++ b/js/js.ast/src/org/jetbrains/kotlin/js/backend/JsToStringGenerationVisitor.java @@ -655,7 +655,6 @@ public class JsToStringGenerationVisitor extends JsVisitor { @Override public void visitFunction(@NotNull JsFunction x) { - pushSourceInfo(x.getSource()); printCommentsBeforeNode(x); p.print(CHARS_FUNCTION); @@ -664,7 +663,6 @@ public class JsToStringGenerationVisitor extends JsVisitor { printFunction(x); printCommentsAfterNode(x); - popSourceInfo(); } // name() { } @@ -673,10 +671,10 @@ public class JsToStringGenerationVisitor extends JsVisitor { nameOf(x); } + pushSourceInfo(x.getSource()); leftParen(); boolean notFirst = false; - for (Object element : x.getParameters()) { - JsParameter param = (JsParameter) element; + for (JsParameter param : x.getParameters()) { notFirst = sepCommaOptSpace(notFirst); accept(param); } @@ -689,6 +687,8 @@ public class JsToStringGenerationVisitor extends JsVisitor { printJsBlock(x.getBody(), true, x.getBody().getSource()); sourceLocationConsumer.popSourceInfo(); + popSourceInfo(); + needSemi = true; } diff --git a/js/js.parser/src/com/google/gwt/dev/js/JsAstMapper.java b/js/js.parser/src/com/google/gwt/dev/js/JsAstMapper.java index 24b13ff6263..7050badb350 100644 --- a/js/js.parser/src/com/google/gwt/dev/js/JsAstMapper.java +++ b/js/js.parser/src/com/google/gwt/dev/js/JsAstMapper.java @@ -1132,6 +1132,15 @@ public class JsAstMapper { if (astNode == null) return null; CodePosition location = node.getPosition(); + // For functions, consider their location to be at the opening parenthesis. + if (node.getType() == TokenStream.FUNCTION) { + Node c = node.getFirstChild(); + while (c != null && c.getType() != TokenStream.LP) + c = c.getNext(); + if (c != null && c.getPosition() != null) + location = c.getPosition(); + } + if (location != null) { JsLocation jsLocation = new JsLocation(fileName, location.getLine(), location.getOffset()); if (astNode instanceof SourceInfoAwareJsNode) { diff --git a/js/js.tests/test/org/jetbrains/kotlin/js/test/handlers/JsDebugRunner.kt b/js/js.tests/test/org/jetbrains/kotlin/js/test/handlers/JsDebugRunner.kt index 258113ab77e..929914ba39f 100644 --- a/js/js.tests/test/org/jetbrains/kotlin/js/test/handlers/JsDebugRunner.kt +++ b/js/js.tests/test/org/jetbrains/kotlin/js/test/handlers/JsDebugRunner.kt @@ -122,10 +122,14 @@ class JsDebugRunner(testServices: TestServices) : AbstractJsArtifactsCollector(t topMostCallFrame: Debugger.CallFrame, loggedItems: MutableList ) { - sourceMap.getSourceLineForGeneratedLocation(topMostCallFrame.location)?.let { (sourceFile, sourceLine) -> + val originalFunctionName = topMostCallFrame.functionLocation?.let { + sourceMap.getSourceLineForGeneratedLocation(it)?.name + } + sourceMap.getSourceLineForGeneratedLocation(topMostCallFrame.location)?.let { (_, sourceFile, sourceLine, _, _) -> + if (sourceFile == null || sourceLine < 0) return@let val testFileName = testFileNameFromMappedLocation(sourceFile, sourceLine) ?: return val expectation = - formatAsSteppingTestExpectation(testFileName, sourceLine + 1, topMostCallFrame.functionName, false) + formatAsSteppingTestExpectation(testFileName, sourceLine + 1, originalFunctionName ?: topMostCallFrame.functionName, false) loggedItems.add(SteppingTestLoggedData(sourceLine + 1, false, expectation)) } } @@ -176,13 +180,11 @@ class JsDebugRunner(testServices: TestServices) : AbstractJsArtifactsCollector(t * Maps [location] in the generated JavaScript file to the corresponding location in a source file. * @return The source file path (as specified in the source map) and the line number in that source file. */ - private fun SourceMap.getSourceLineForGeneratedLocation(location: Debugger.Location): Pair? { - - fun SourceMapSegment.sourceFileAndLine() = sourceFileName!! to sourceLineNumber + private fun SourceMap.getSourceLineForGeneratedLocation(location: Debugger.Location): SourceMapSegment? { val group = groups.getOrNull(location.lineNumber)?.takeIf { it.segments.isNotEmpty() } ?: return null - val columnNumber = location.columnNumber ?: return group.segments[0].sourceFileAndLine() - val segment = if (columnNumber <= group.segments[0].generatedColumnNumber) { + val columnNumber = location.columnNumber ?: return group.segments[0] + return if (columnNumber <= group.segments[0].generatedColumnNumber) { group.segments[0] } else { val candidateIndex = group.segments.indexOfFirst { @@ -195,7 +197,6 @@ class JsDebugRunner(testServices: TestServices) : AbstractJsArtifactsCollector(t else group.segments[candidateIndex - 1] } - return segment?.sourceFileAndLine() } /** diff --git a/js/js.translator/testData/lineNumbers/andAndWithSideEffect.kt b/js/js.translator/testData/lineNumbers/andAndWithSideEffect.kt index b318a91a095..b2f8247520f 100644 --- a/js/js.translator/testData/lineNumbers/andAndWithSideEffect.kt +++ b/js/js.translator/testData/lineNumbers/andAndWithSideEffect.kt @@ -6,5 +6,5 @@ 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): 3 3 3 * 3 * 4 4 4 * 4 4 2 * 7 7 +// 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 * 3 3 3 * 3 * 4 4 4 * 4 4 2 7 7 7 diff --git a/js/js.translator/testData/lineNumbers/backingField.kt b/js/js.translator/testData/lineNumbers/backingField.kt index f36bacf2f50..a279e773ab0 100644 --- a/js/js.translator/testData/lineNumbers/backingField.kt +++ b/js/js.translator/testData/lineNumbers/backingField.kt @@ -12,5 +12,5 @@ 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): 2 2 4 4 * 2 2 * 2 2 * 8 9 10 10 11 * 6 6 5 6 +// 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 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 1fc28758d6c..dce19fe0ac7 100644 --- a/js/js.translator/testData/lineNumbers/catch.kt +++ b/js/js.translator/testData/lineNumbers/catch.kt @@ -19,5 +19,5 @@ 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): 3 3 * 6 6 * 9 9 * 15 15 18 18 +// 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 3 3 * 6 6 * 9 9 * 13 15 15 18 18 diff --git a/js/js.translator/testData/lineNumbers/chainedCall.kt b/js/js.translator/testData/lineNumbers/chainedCall.kt index c821fa142eb..33bbc126850 100644 --- a/js/js.translator/testData/lineNumbers/chainedCall.kt +++ b/js/js.translator/testData/lineNumbers/chainedCall.kt @@ -14,5 +14,5 @@ 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): 2 4 3 2 6 8 7 6 * 12 12 * 14 14 +// LINES(JS): 1 9 2 4 3 2 6 8 7 6 11 12 12 12 14 14 14 +// LINES(JS_IR): 1 2 4 3 2 6 8 7 6 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 619205ff5b5..20d1b79e81a 100644 --- a/js/js.translator/testData/lineNumbers/classCapturingLocals.kt +++ b/js/js.translator/testData/lineNumbers/classCapturingLocals.kt @@ -15,4 +15,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): 4 4 11 11 12 12 * 15 15 * 7 7 8 8 +// LINES(JS_IR): 1 3 4 4 11 11 12 12 15 15 15 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 eb4efea0c8d..72d2bff1e03 100644 --- a/js/js.translator/testData/lineNumbers/closure.kt +++ b/js/js.translator/testData/lineNumbers/closure.kt @@ -5,5 +5,5 @@ 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): 5 5 * 4 4 +// LINES(JS): 2 2 2 4 4 1 6 2 2 5 5 +// LINES(JS_IR): 1 5 5 2 4 4 diff --git a/js/js.translator/testData/lineNumbers/complexExpressionAsDefaultArgument.kt b/js/js.translator/testData/lineNumbers/complexExpressionAsDefaultArgument.kt index 3f8b40f3ce5..e6eabab33d7 100644 --- a/js/js.translator/testData/lineNumbers/complexExpressionAsDefaultArgument.kt +++ b/js/js.translator/testData/lineNumbers/complexExpressionAsDefaultArgument.kt @@ -11,5 +11,5 @@ 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 3 3 4 5 1 * 8 8 * 10 10 * 12 12 +// 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 * 1 3 3 4 5 1 * 8 8 10 10 10 12 12 12 diff --git a/js/js.translator/testData/lineNumbers/conditionalDecomposed.kt b/js/js.translator/testData/lineNumbers/conditionalDecomposed.kt index 5f033bd6631..a04be13f84f 100644 --- a/js/js.translator/testData/lineNumbers/conditionalDecomposed.kt +++ b/js/js.translator/testData/lineNumbers/conditionalDecomposed.kt @@ -15,4 +15,4 @@ private inline fun foo(): Int { } // 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 +// LINES(JS_IR): 1 * 4 6 * 13 13 14 14 8 2 12 13 13 14 14 diff --git a/js/js.translator/testData/lineNumbers/coroutine.kt b/js/js.translator/testData/lineNumbers/coroutine.kt index 8f663fd759a..51849612f55 100644 --- a/js/js.translator/testData/lineNumbers/coroutine.kt +++ b/js/js.translator/testData/lineNumbers/coroutine.kt @@ -15,4 +15,4 @@ suspend fun bar(): Unit { } // 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 3 45 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 +// LINES(JS_IR): 4 * 19 19 * 50 50 93 93 3 45 3 45 45 6 6 19 9 9 9 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 b3137943df0..3bf6f4c961f 100644 --- a/js/js.translator/testData/lineNumbers/coroutineNullAssertion.kt +++ b/js/js.translator/testData/lineNumbers/coroutineNullAssertion.kt @@ -9,4 +9,4 @@ 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 1 1 1 1 1 1 * 1 1 * 2 * 3 3 3 * 5 5 +// LINES(JS_IR): 1 1 1 1 1 1 1 1 1 8 * 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 11e57507183..6752c98d021 100644 --- a/js/js.translator/testData/lineNumbers/dataClass.kt +++ b/js/js.translator/testData/lineNumbers/dataClass.kt @@ -6,4 +6,4 @@ data class A( // 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 +// LINES(JS_IR): 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 05c78113bc0..1f27d921c8f 100644 --- a/js/js.translator/testData/lineNumbers/delegateMemberVal.kt +++ b/js/js.translator/testData/lineNumbers/delegateMemberVal.kt @@ -14,4 +14,4 @@ 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 3 * 3 3 2 1 2 * 7 7 * 10 10 * 10 10 * 12 12 * 2 +// LINES(JS_IR): 3 3 3 1 3 3 3 2 3 3 2 1 2 6 7 7 10 10 10 10 10 10 11 12 12 2 2 diff --git a/js/js.translator/testData/lineNumbers/delegatedProperty.kt b/js/js.translator/testData/lineNumbers/delegatedProperty.kt index 65d9538ba7c..8bf8a7dea2d 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): 5 5 * 5 5 4 1 4 5 * 5 5 4 1 4 * 10 10 * 14 14 * 4 * 4 +// LINES(JS): 3 4 5 * 4 4 4 * 8 9 11 10 10 13 15 14 14 +// LINES(JS_IR): 3 5 5 4 5 5 4 1 4 5 4 5 5 4 1 4 8 9 10 10 13 14 14 4 4 * 4 4 diff --git a/js/js.translator/testData/lineNumbers/delegation.kt b/js/js.translator/testData/lineNumbers/delegation.kt index 868bd26990f..58f79db9577 100644 --- a/js/js.translator/testData/lineNumbers/delegation.kt +++ b/js/js.translator/testData/lineNumbers/delegation.kt @@ -19,4 +19,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 * 3 3 * 1 1 * 1 1 * 1 1 * 12 12 * 17 17 * 15 15 * 11 +// LINES(JS_IR): 11 11 11 * 1 3 3 1 1 1 1 1 1 1 1 1 * 11 12 12 12 16 17 17 15 15 15 11 diff --git a/js/js.translator/testData/lineNumbers/destructuring.kt b/js/js.translator/testData/lineNumbers/destructuring.kt index 8e35064ea92..6b4473465c5 100644 --- a/js/js.translator/testData/lineNumbers/destructuring.kt +++ b/js/js.translator/testData/lineNumbers/destructuring.kt @@ -28,4 +28,4 @@ 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 * 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 +// LINES(JS_IR): 1 1 1 1 1 1 * 3 9 9 9 9 9 6 6 9 7 7 9 11 11 12 12 15 15 25 26 26 15 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 93cf1e8760d..a120653187a 100644 --- a/js/js.translator/testData/lineNumbers/destructuringInline.kt +++ b/js/js.translator/testData/lineNumbers/destructuringInline.kt @@ -33,4 +33,4 @@ 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 * 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 +// LINES(JS_IR): 1 1 1 1 1 1 * 3 9 9 9 9 9 * 31 31 9 6 6 * 33 33 9 7 7 11 11 12 12 15 15 25 26 26 29 29 29 29 29 29 29 29 29 29 29 31 31 31 33 33 33 15 * 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 890988be6d9..d642f8e133d 100644 --- a/js/js.translator/testData/lineNumbers/doWhileWithComplexCondition.kt +++ b/js/js.translator/testData/lineNumbers/doWhileWithComplexCondition.kt @@ -13,5 +13,5 @@ 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): 2 2 4 4 * 8 8 8 8 8 11 11 * 7 12 +// 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 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 169c47818ae..2e326bab1ef 100644 --- a/js/js.translator/testData/lineNumbers/elvis.kt +++ b/js/js.translator/testData/lineNumbers/elvis.kt @@ -10,4 +10,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 * 4 5 5 * 5 * 7 7 7 * 5 4 4 * 10 10 * 1 +// LINES(JS_IR): 1 1 1 1 1 1 * 3 4 5 5 * 5 * 7 7 7 * 5 4 4 10 10 10 * 1 diff --git a/js/js.translator/testData/lineNumbers/enumCompanionObject.kt b/js/js.translator/testData/lineNumbers/enumCompanionObject.kt index 1c60eeadfc8..5210111743d 100644 --- a/js/js.translator/testData/lineNumbers/enumCompanionObject.kt +++ b/js/js.translator/testData/lineNumbers/enumCompanionObject.kt @@ -7,4 +7,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): 5 5 * 5 5 +// LINES(JS_IR): 4 * 5 5 5 5 5 * 1 * 1 * 1 diff --git a/js/js.translator/testData/lineNumbers/enumObject.kt b/js/js.translator/testData/lineNumbers/enumObject.kt index f7f19bab519..b6fbcfe340c 100644 --- a/js/js.translator/testData/lineNumbers/enumObject.kt +++ b/js/js.translator/testData/lineNumbers/enumObject.kt @@ -11,4 +11,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): 5 5 * 9 9 +// LINES(JS_IR): 4 * 5 5 5 * 8 * 9 9 9 * 1 * 1 * 1 diff --git a/js/js.translator/testData/lineNumbers/expressionAsFunctionBody.kt b/js/js.translator/testData/lineNumbers/expressionAsFunctionBody.kt index ff7508da6a4..1019a8708f8 100644 --- a/js/js.translator/testData/lineNumbers/expressionAsFunctionBody.kt +++ b/js/js.translator/testData/lineNumbers/expressionAsFunctionBody.kt @@ -5,4 +5,4 @@ fun foo() = 23 // LINES(JS): 1 2 2 4 5 5 -// LINES(JS_IR): 2 2 * 5 5 +// LINES(JS_IR): 1 2 2 4 5 5 diff --git a/js/js.translator/testData/lineNumbers/for.kt b/js/js.translator/testData/lineNumbers/for.kt index bc38144d456..aa40421fe08 100644 --- a/js/js.translator/testData/lineNumbers/for.kt +++ b/js/js.translator/testData/lineNumbers/for.kt @@ -18,4 +18,4 @@ 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): 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 +// LINES(JS_IR): 1 * 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 70710f5c143..58300b392d4 100644 --- a/js/js.translator/testData/lineNumbers/increment.kt +++ b/js/js.translator/testData/lineNumbers/increment.kt @@ -9,4 +9,4 @@ fun foo(x: Int) { } // 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 +// LINES(JS_IR): 1 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 9ec83ee591c..1a2b4de7e5d 100644 --- a/js/js.translator/testData/lineNumbers/inlineArguments.kt +++ b/js/js.translator/testData/lineNumbers/inlineArguments.kt @@ -12,4 +12,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 * 4 4 8 8 9 9 * 8 8 9 9 * 12 12 * 1 +// LINES(JS_IR): 1 1 1 1 1 1 * 3 * 4 4 8 8 9 9 7 8 8 9 9 12 12 12 * 1 diff --git a/js/js.translator/testData/lineNumbers/inlineLocalVarsRef.kt b/js/js.translator/testData/lineNumbers/inlineLocalVarsRef.kt index df908795859..e4b066e7f90 100644 --- a/js/js.translator/testData/lineNumbers/inlineLocalVarsRef.kt +++ b/js/js.translator/testData/lineNumbers/inlineLocalVarsRef.kt @@ -10,4 +10,4 @@ fun bar() { } // 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 +// LINES(JS_IR): 1 2 2 3 4 4 8 * 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 a1b16976574..048fff7f98b 100644 --- a/js/js.translator/testData/lineNumbers/inlineMultiModule/simple.kt +++ b/js/js.translator/testData/lineNumbers/inlineMultiModule/simple.kt @@ -9,7 +9,7 @@ inline fun foo(x: String) { } // LINES(JS): 6 6 6 6 6 9 7 7 8 8 -// LINES(JS_IR): 7 7 8 8 +// LINES(JS_IR): 6 7 7 8 8 // MODULE: main(lib) // FILE: main.kt @@ -23,4 +23,4 @@ fun box() { } // 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 +// LINES(JS_IR): 20 * 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 b944ad9657f..a4a0bce56d4 100644 --- a/js/js.translator/testData/lineNumbers/inlineReturn.kt +++ b/js/js.translator/testData/lineNumbers/inlineReturn.kt @@ -22,4 +22,4 @@ fun bar(x: Int) { } // 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 +// LINES(JS_IR): 1 2 3 3 4 7 7 9 10 10 11 14 14 16 16 19 * 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 2d2c794959d..f303217deb9 100644 --- a/js/js.translator/testData/lineNumbers/inlining.kt +++ b/js/js.translator/testData/lineNumbers/inlining.kt @@ -11,5 +11,5 @@ 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): 2 2 * 10 10 11 11 4 4 * 10 10 11 11 6 6 * 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): 1 2 2 * 10 10 11 11 4 4 * 10 10 11 11 6 6 9 10 10 11 11 diff --git a/js/js.translator/testData/lineNumbers/inliningWithLambda.kt b/js/js.translator/testData/lineNumbers/inliningWithLambda.kt index 25d40e021ef..3e0b115fd0b 100644 --- a/js/js.translator/testData/lineNumbers/inliningWithLambda.kt +++ b/js/js.translator/testData/lineNumbers/inliningWithLambda.kt @@ -16,5 +16,5 @@ 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): 2 2 * 14 14 * 4 4 16 16 6 6 * 14 14 * 8 8 16 16 10 10 * 14 14 15 15 16 16 +// 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 2 2 * 14 14 * 4 4 16 16 6 6 * 14 14 * 8 8 16 16 10 10 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 1c168baab6b..2e93ceddfee 100644 --- a/js/js.translator/testData/lineNumbers/innerClass.kt +++ b/js/js.translator/testData/lineNumbers/innerClass.kt @@ -6,5 +6,5 @@ class A(val x: Int) { } } -// LINES(JS): 1 1 2 2 3 5 4 4 -// LINES(JS_IR): 2 2 * 4 4 * 1 1 * 1 1 +// LINES(JS): 1 1 2 2 3 5 4 4 +// LINES(JS_IR): 2 2 2 3 4 4 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 98c15d8b09f..9ed10c503b0 100644 --- a/js/js.translator/testData/lineNumbers/isOperator.kt +++ b/js/js.translator/testData/lineNumbers/isOperator.kt @@ -11,5 +11,5 @@ 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 * 4 * 10 10 11 11 4 4 * 5 5 * 10 10 11 11 * 1 +// 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 * 3 * 4 * 10 10 11 11 4 4 * 5 5 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 c07a1a9418f..3ebe9b3a9f9 100644 --- a/js/js.translator/testData/lineNumbers/jsCode.kt +++ b/js/js.translator/testData/lineNumbers/jsCode.kt @@ -6,4 +6,4 @@ fun foo() { } // LINES(JS): 1 6 2 2 3 3 4 4 5 5 -// LINES(JS_IR): 2 2 3 3 4 4 5 5 +// LINES(JS_IR): 1 2 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 6cdaaac8c17..2d5c4be6a68 100644 --- a/js/js.translator/testData/lineNumbers/lambdaWithClosure.kt +++ b/js/js.translator/testData/lineNumbers/lambdaWithClosure.kt @@ -5,4 +5,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): 3 3 1 * 5 5 * 2 2 +// LINES(JS_IR): 1 3 3 1 5 5 5 1 1 2 2 diff --git a/js/js.translator/testData/lineNumbers/lastExpressionInInlineLambda.kt b/js/js.translator/testData/lineNumbers/lastExpressionInInlineLambda.kt index 3ced4fa7686..20a6021a173 100644 --- a/js/js.translator/testData/lineNumbers/lastExpressionInInlineLambda.kt +++ b/js/js.translator/testData/lineNumbers/lastExpressionInInlineLambda.kt @@ -24,5 +24,5 @@ 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): 4 * 7 * 3 20 20 * 12 12 12 13 14 20 20 * 20 20 * 23 23 * 25 25 +// 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 * 4 * 7 * 3 20 20 * 12 12 12 13 14 20 20 19 20 20 23 23 23 25 25 25 diff --git a/js/js.translator/testData/lineNumbers/literals.kt b/js/js.translator/testData/lineNumbers/literals.kt index 33010ae7465..01acd90d623 100644 --- a/js/js.translator/testData/lineNumbers/literals.kt +++ b/js/js.translator/testData/lineNumbers/literals.kt @@ -27,4 +27,4 @@ fun bar(vararg x: Any?) { } // 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 +// LINES(JS_IR): 1 2 3 4 5 6 7 8 9 10 13 14 15 16 17 18 19 20 25 26 26 diff --git a/js/js.translator/testData/lineNumbers/longLiteral.kt b/js/js.translator/testData/lineNumbers/longLiteral.kt index 9544cbb033e..fddfec8ef7e 100644 --- a/js/js.translator/testData/lineNumbers/longLiteral.kt +++ b/js/js.translator/testData/lineNumbers/longLiteral.kt @@ -6,4 +6,4 @@ fun foo() { } // LINES(JS): 3 * 5 1 6 2 4 -// LINES(JS_IR): 2 4 +// LINES(JS_IR): 1 2 4 diff --git a/js/js.translator/testData/lineNumbers/memberFunWithDefaultParam.kt b/js/js.translator/testData/lineNumbers/memberFunWithDefaultParam.kt index 1f9a95c55a9..c76e2fde793 100644 --- a/js/js.translator/testData/lineNumbers/memberFunWithDefaultParam.kt +++ b/js/js.translator/testData/lineNumbers/memberFunWithDefaultParam.kt @@ -11,4 +11,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): 2 2 * 2 2 2 * 4 4 * 7 * 9 9 +// LINES(JS_IR): 1 2 2 2 2 2 2 2 4 4 4 7 7 8 9 9 diff --git a/js/js.translator/testData/lineNumbers/multipleReferences.kt b/js/js.translator/testData/lineNumbers/multipleReferences.kt index cee070c4ba9..4abfa63b33a 100644 --- a/js/js.translator/testData/lineNumbers/multipleReferences.kt +++ b/js/js.translator/testData/lineNumbers/multipleReferences.kt @@ -12,5 +12,5 @@ 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): 2 2 3 3 4 4 6 6 7 7 8 8 * 12 12 * 12 12 +// 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 2 2 3 3 4 4 6 6 7 7 8 8 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 bbddea06a31..850cfbeabd8 100644 --- a/js/js.translator/testData/lineNumbers/objectInstanceFunction.kt +++ b/js/js.translator/testData/lineNumbers/objectInstanceFunction.kt @@ -5,4 +5,4 @@ fun foo() { } // LINES(JS): 1 1 * 1 1 1 1 1 1 3 5 4 4 -// LINES(JS_IR): 4 4 +// LINES(JS_IR): 1 * 3 4 4 diff --git a/js/js.translator/testData/lineNumbers/optionalArgs.kt b/js/js.translator/testData/lineNumbers/optionalArgs.kt index 2401964d7b5..2c8348a4f8d 100644 --- a/js/js.translator/testData/lineNumbers/optionalArgs.kt +++ b/js/js.translator/testData/lineNumbers/optionalArgs.kt @@ -7,5 +7,5 @@ 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 1 1 4 1 6 6 7 7 +// LINES(JS): 1 8 2 2 2 2 3 3 3 4 6 6 7 7 +// LINES(JS_IR): 1 1 2 1 1 4 1 6 6 7 7 diff --git a/js/js.translator/testData/lineNumbers/propertyWithoutInitializer.kt b/js/js.translator/testData/lineNumbers/propertyWithoutInitializer.kt index 411e86b20e5..5d967dd0a0b 100644 --- a/js/js.translator/testData/lineNumbers/propertyWithoutInitializer.kt +++ b/js/js.translator/testData/lineNumbers/propertyWithoutInitializer.kt @@ -10,4 +10,4 @@ open class A { } // LINES(JS): 1 2 4 7 7 8 8 4 4 4 -// LINES(JS_IR): 7 7 8 8 * 2 2 * 4 4 +// LINES(JS_IR): 1 7 7 8 8 2 2 2 4 4 4 diff --git a/js/js.translator/testData/lineNumbers/simple.kt b/js/js.translator/testData/lineNumbers/simple.kt index 59ef6292cad..64f870d8f50 100644 --- a/js/js.translator/testData/lineNumbers/simple.kt +++ b/js/js.translator/testData/lineNumbers/simple.kt @@ -4,4 +4,4 @@ fun box() { } // LINES(JS): 1 4 2 2 3 3 -// LINES(JS_IR): 2 2 3 3 +// LINES(JS_IR): 1 2 2 3 3 diff --git a/js/js.translator/testData/lineNumbers/stringLiteral.kt b/js/js.translator/testData/lineNumbers/stringLiteral.kt index 3ece5b624de..52376927cb3 100644 --- a/js/js.translator/testData/lineNumbers/stringLiteral.kt +++ b/js/js.translator/testData/lineNumbers/stringLiteral.kt @@ -5,4 +5,4 @@ fun box(x: Int): String { } // LINES(JS): 1 5 2 2 3 4 -// LINES(JS_IR): 2 2 3 4 +// LINES(JS_IR): 1 2 2 3 4 diff --git a/js/js.translator/testData/lineNumbers/syntheticCodeInConstructors.kt b/js/js.translator/testData/lineNumbers/syntheticCodeInConstructors.kt index 94b8bca26ff..1bc13654118 100644 --- a/js/js.translator/testData/lineNumbers/syntheticCodeInConstructors.kt +++ b/js/js.translator/testData/lineNumbers/syntheticCodeInConstructors.kt @@ -26,4 +26,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): 3 * 10 11 * 16 17 15 19 * 23 24 23 +// LINES(JS_IR): 1 * 3 * 7 9 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 f5356f56d45..46afba8f84b 100644 --- a/js/js.translator/testData/lineNumbers/syntheticCodeInEnums.kt +++ b/js/js.translator/testData/lineNumbers/syntheticCodeInEnums.kt @@ -8,5 +8,5 @@ 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): 6 6 +// 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 * 6 6 * 1 * 1 * 1 diff --git a/js/js.translator/testData/lineNumbers/valParameter.kt b/js/js.translator/testData/lineNumbers/valParameter.kt index e10502c6c72..b5d359c04ee 100644 --- a/js/js.translator/testData/lineNumbers/valParameter.kt +++ b/js/js.translator/testData/lineNumbers/valParameter.kt @@ -7,5 +7,5 @@ fun foo() { A(23, "foo") } -// LINES(JS): 1 2 3 * 6 8 7 7 -// LINES(JS_IR): 2 2 3 3 * 2 2 * 3 3 * 7 7 +// LINES(JS): 1 2 3 * 6 8 7 7 +// LINES(JS_IR): 1 2 2 3 3 2 2 2 3 3 3 6 7 7 diff --git a/js/js.translator/testData/lineNumbers/whenEntryWithMultipleConditions.kt b/js/js.translator/testData/lineNumbers/whenEntryWithMultipleConditions.kt index 919ab11f3f3..d2d47307cda 100644 --- a/js/js.translator/testData/lineNumbers/whenEntryWithMultipleConditions.kt +++ b/js/js.translator/testData/lineNumbers/whenEntryWithMultipleConditions.kt @@ -19,4 +19,4 @@ 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): 4 4 2 6 7 8 9 11 12 13 16 +// LINES(JS_IR): 1 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 5e21b38637b..fd83f6bd0d5 100644 --- a/js/js.translator/testData/lineNumbers/whenEntryWithMultipleConditionsNonOptimized.kt +++ b/js/js.translator/testData/lineNumbers/whenEntryWithMultipleConditionsNonOptimized.kt @@ -29,4 +29,4 @@ 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): 4 4 2 6 7 8 9 11 12 13 16 * 21 21 * 23 23 * 25 25 * 27 27 * 29 29 +// LINES(JS_IR): 1 4 4 2 6 7 8 9 11 12 13 16 21 21 21 23 23 23 25 25 25 27 27 27 29 29 29 diff --git a/js/js.translator/testData/lineNumbers/whenIn.kt b/js/js.translator/testData/lineNumbers/whenIn.kt index a96f0a37f81..b263e646f10 100644 --- a/js/js.translator/testData/lineNumbers/whenIn.kt +++ b/js/js.translator/testData/lineNumbers/whenIn.kt @@ -14,4 +14,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): 2 2 3 4 4 5 6 6 7 7 7 7 7 8 8 * 12 12 * 14 14 +// LINES(JS_IR): 1 2 2 3 4 4 5 6 6 7 7 7 7 7 8 8 12 12 12 14 14 14 diff --git a/js/js.translator/testData/lineNumbers/whenIs.kt b/js/js.translator/testData/lineNumbers/whenIs.kt index 540a0d82b4d..0fda1c71920 100644 --- a/js/js.translator/testData/lineNumbers/whenIs.kt +++ b/js/js.translator/testData/lineNumbers/whenIs.kt @@ -14,4 +14,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): 2 2 3 4 4 5 6 6 8 8 * 14 +// LINES(JS_IR): 1 2 2 3 4 4 5 6 6 8 8 12 14 14 diff --git a/js/js.translator/testData/lineNumbers/whileWithComplexCondition.kt b/js/js.translator/testData/lineNumbers/whileWithComplexCondition.kt index e18e8a354b1..e63f3d3b9fd 100644 --- a/js/js.translator/testData/lineNumbers/whileWithComplexCondition.kt +++ b/js/js.translator/testData/lineNumbers/whileWithComplexCondition.kt @@ -13,4 +13,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): 2 2 * 5 5 5 5 5 8 8 * 4 9 * 11 11 +// LINES(JS_IR): 1 2 2 * 5 5 5 5 5 8 8 * 4 9 * 11 11