From 46b98a1e98283af42f38030ae719e18c9fa46c18 Mon Sep 17 00:00:00 2001 From: Roman Artemev Date: Tue, 23 Jul 2019 18:51:58 +0300 Subject: [PATCH] [JS BE] Make sourceMap generation more precise - Don't produce mapping for closing bracket in case of expressionBody - Map Kt*Function declaration into corresponding js fun declaration - Update test data & add new test --- .../js/backend/JsToStringGenerationVisitor.java | 6 +++++- .../js/coroutine/CoroutineFunctionTransformer.kt | 8 ++++++-- .../src/com/google/gwt/dev/js/rhino/Node.java | 4 ++++ .../src/com/google/gwt/dev/js/rhino/Parser.java | 5 ++--- .../SourceMapGenerationSmokeTestGenerated.java | 5 +++++ .../declaration/AbstractDeclarationVisitor.kt | 4 +++- .../js/translate/declaration/PropertyTranslator.kt | 8 ++++++-- .../expression/LiteralFunctionTranslator.kt | 4 +++- .../reference/CallableReferenceTranslator.kt | 4 +++- .../jetbrains/kotlin/js/translate/utils/utils.kt | 4 +++- .../testData/lineNumbers/andAndWithSideEffect.kt | 2 +- .../testData/lineNumbers/backingField.kt | 2 +- js/js.translator/testData/lineNumbers/catch.kt | 2 +- .../testData/lineNumbers/chainedCall.kt | 2 +- .../testData/lineNumbers/classCapturingLocals.kt | 2 +- js/js.translator/testData/lineNumbers/closure.kt | 2 +- .../complexExpressionAsDefaultArgument.kt | 2 +- .../testData/lineNumbers/conditionalDecomposed.kt | 2 +- js/js.translator/testData/lineNumbers/coroutine.kt | 2 +- .../testData/lineNumbers/coroutineNullAssertion.kt | 2 +- .../testData/lineNumbers/delegateMemberVal.kt | 2 +- .../testData/lineNumbers/delegatedProperty.kt | 2 +- js/js.translator/testData/lineNumbers/delegation.kt | 2 +- .../testData/lineNumbers/destructuring.kt | 2 +- .../testData/lineNumbers/destructuringInline.kt | 2 +- .../lineNumbers/doWhileWithComplexCondition.kt | 2 +- js/js.translator/testData/lineNumbers/elvis.kt | 2 +- .../lineNumbers/expressionAsFunctionBody.kt | 2 +- js/js.translator/testData/lineNumbers/for.kt | 2 +- js/js.translator/testData/lineNumbers/increment.kt | 2 +- .../testData/lineNumbers/inlineArguments.kt | 2 +- .../testData/lineNumbers/inlineLocalVarsRef.kt | 2 +- .../lineNumbers/inlineMultiModule/simple.kt | 2 +- .../testData/lineNumbers/inlineReturn.kt | 2 +- js/js.translator/testData/lineNumbers/inlining.kt | 2 +- .../testData/lineNumbers/inliningWithLambda.kt | 2 +- js/js.translator/testData/lineNumbers/innerClass.kt | 2 +- js/js.translator/testData/lineNumbers/isOperator.kt | 2 +- js/js.translator/testData/lineNumbers/jsCode.kt | 2 +- .../testData/lineNumbers/lambdaWithClosure.kt | 2 +- .../lineNumbers/lastExpressionInInlineLambda.kt | 2 +- js/js.translator/testData/lineNumbers/literals.kt | 2 +- .../testData/lineNumbers/longLiteral.kt | 2 +- .../lineNumbers/memberFunWithDefaultParam.kt | 2 +- .../testData/lineNumbers/multipleReferences.kt | 2 +- .../testData/lineNumbers/objectInstanceFunction.kt | 2 +- .../testData/lineNumbers/optionalArgs.kt | 2 +- js/js.translator/testData/lineNumbers/simple.kt | 2 +- .../testData/lineNumbers/stringLiteral.kt | 2 +- .../testData/lineNumbers/valParameter.kt | 2 +- .../lineNumbers/whenEntryWithMultipleConditions.kt | 2 +- .../whenEntryWithMultipleConditionsNonOptimized.kt | 2 +- js/js.translator/testData/lineNumbers/whenIn.kt | 2 +- js/js.translator/testData/lineNumbers/whenIs.kt | 2 +- .../lineNumbers/whileWithComplexCondition.kt | 2 +- .../testData/sourcemap/expressionBody.kt | 13 +++++++++++++ 56 files changed, 98 insertions(+), 57 deletions(-) create mode 100644 js/js.translator/testData/sourcemap/expressionBody.kt 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 bb6bcd6377d..e7e04146054 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 @@ -605,6 +605,8 @@ public class JsToStringGenerationVisitor extends JsVisitor { @Override public void visitFunction(@NotNull JsFunction x) { + pushSourceInfo(x.getSource()); + p.print(CHARS_FUNCTION); space(); if (x.getName() != null) { @@ -624,10 +626,12 @@ public class JsToStringGenerationVisitor extends JsVisitor { lineBreakAfterBlock = false; sourceLocationConsumer.pushSourceInfo(null); - printJsBlock(x.getBody(), true, x.getSource()); + printJsBlock(x.getBody(), true, x.getBody().getSource()); sourceLocationConsumer.popSourceInfo(); needSemi = true; + + popSourceInfo(); } @Override diff --git a/js/js.inliner/src/org/jetbrains/kotlin/js/coroutine/CoroutineFunctionTransformer.kt b/js/js.inliner/src/org/jetbrains/kotlin/js/coroutine/CoroutineFunctionTransformer.kt index b9bddd6845a..bff6cb2421b 100644 --- a/js/js.inliner/src/org/jetbrains/kotlin/js/coroutine/CoroutineFunctionTransformer.kt +++ b/js/js.inliner/src/org/jetbrains/kotlin/js/coroutine/CoroutineFunctionTransformer.kt @@ -17,6 +17,7 @@ package org.jetbrains.kotlin.js.coroutine import com.intellij.psi.PsiElement +import com.intellij.psi.impl.source.tree.LeafPsiElement import org.jetbrains.kotlin.js.backend.ast.* import org.jetbrains.kotlin.js.backend.ast.metadata.coroutineMetadata import org.jetbrains.kotlin.js.backend.ast.metadata.forceStateMachine @@ -132,7 +133,8 @@ class CoroutineFunctionTransformer(private val function: JsFunction, name: Strin val psiElement = context.metadata.psiElement val constructor = JsFunction(function.scope.parent, JsBlock(), "Continuation") - constructor.source = psiElement?.finalElement + constructor.source = psiElement + constructor.body.source = psiElement?.finalElement as? LeafPsiElement constructor.name = className if (context.metadata.hasReceiver) { constructor.parameters += JsParameter(context.receiverFieldName) @@ -202,7 +204,9 @@ class CoroutineFunctionTransformer(private val function: JsFunction, name: Strin statements: MutableList ) { val resumeFunction = JsFunction(function.scope.parent, JsBlock(), "resume function") - resumeFunction.source = context.metadata.psiElement?.finalElement + val psi = context.metadata.psiElement + resumeFunction.source = psi + resumeFunction.body.source = psi?.finalElement as? LeafPsiElement val coroutineBody = generateCoroutineBody(context, coroutineBlocks) functionWithBody.body.statements.clear() diff --git a/js/js.parser/src/com/google/gwt/dev/js/rhino/Node.java b/js/js.parser/src/com/google/gwt/dev/js/rhino/Node.java index 440f33131b5..faeb0c66e0a 100644 --- a/js/js.parser/src/com/google/gwt/dev/js/rhino/Node.java +++ b/js/js.parser/src/com/google/gwt/dev/js/rhino/Node.java @@ -346,6 +346,10 @@ public class Node implements Cloneable { return position; } + public void setPosition(CodePosition position) { + this.position = position; + } + /** Can only be called when getType() == TokenStream.NUMBER */ public double getDouble() throws UnsupportedOperationException { throw new UnsupportedOperationException(this + " is not a number node"); diff --git a/js/js.parser/src/com/google/gwt/dev/js/rhino/Parser.java b/js/js.parser/src/com/google/gwt/dev/js/rhino/Parser.java index 466a15391b8..0cd62bb77d2 100644 --- a/js/js.parser/src/com/google/gwt/dev/js/rhino/Parser.java +++ b/js/js.parser/src/com/google/gwt/dev/js/rhino/Parser.java @@ -222,7 +222,6 @@ public class Parser { int savedFunctionNumber = functionNumber; Node args; Node body; - CodePosition closingBracketPosition; try { functionNumber = 0; args = nf.createLeaf(TokenStream.LP, ts.tokenPosition); @@ -241,7 +240,7 @@ public class Parser { mustMatchToken(ts, TokenStream.LC, "msg.no.brace.body"); body = parseFunctionBody(ts); - closingBracketPosition = ts.tokenPosition; + body.setPosition(ts.tokenPosition); mustMatchToken(ts, TokenStream.RC, "msg.no.brace.after.body"); // skip the last EOL so nested functions work... } @@ -250,7 +249,7 @@ public class Parser { functionNumber = savedFunctionNumber; } - Node pn = nf.createFunction(nameNode, args, body, closingBracketPosition); + Node pn = nf.createFunction(nameNode, args, body, basePosition); if (memberExprNode != null) { pn = nf.createBinary(TokenStream.ASSIGN, TokenStream.NOP, memberExprNode, pn, basePosition); } diff --git a/js/js.tests/test/org/jetbrains/kotlin/js/test/semantics/SourceMapGenerationSmokeTestGenerated.java b/js/js.tests/test/org/jetbrains/kotlin/js/test/semantics/SourceMapGenerationSmokeTestGenerated.java index 1bfb909b907..be4416a5e83 100644 --- a/js/js.tests/test/org/jetbrains/kotlin/js/test/semantics/SourceMapGenerationSmokeTestGenerated.java +++ b/js/js.tests/test/org/jetbrains/kotlin/js/test/semantics/SourceMapGenerationSmokeTestGenerated.java @@ -39,6 +39,11 @@ public class SourceMapGenerationSmokeTestGenerated extends AbstractSourceMapGene runTest("js/js.translator/testData/sourcemap/emptyIfInsideInlineLambda.kt"); } + @TestMetadata("expressionBody.kt") + public void testExpressionBody() throws Exception { + runTest("js/js.translator/testData/sourcemap/expressionBody.kt"); + } + @TestMetadata("methodCallInMethod.kt") public void testMethodCallInMethod() throws Exception { runTest("js/js.translator/testData/sourcemap/methodCallInMethod.kt"); diff --git a/js/js.translator/src/org/jetbrains/kotlin/js/translate/declaration/AbstractDeclarationVisitor.kt b/js/js.translator/src/org/jetbrains/kotlin/js/translate/declaration/AbstractDeclarationVisitor.kt index 91d59b68c55..1e39b820fc6 100644 --- a/js/js.translator/src/org/jetbrains/kotlin/js/translate/declaration/AbstractDeclarationVisitor.kt +++ b/js/js.translator/src/org/jetbrains/kotlin/js/translate/declaration/AbstractDeclarationVisitor.kt @@ -16,6 +16,7 @@ package org.jetbrains.kotlin.js.translate.declaration +import com.intellij.psi.impl.source.tree.LeafPsiElement import org.jetbrains.kotlin.descriptors.FunctionDescriptor import org.jetbrains.kotlin.descriptors.Modality import org.jetbrains.kotlin.descriptors.PropertyDescriptor @@ -106,7 +107,8 @@ abstract class AbstractDeclarationVisitor : TranslatorVisitor() { context: TranslationContext ): Pair { val function = context.getFunctionObject(descriptor) - function.source = expression.finalElement + function.source = expression + function.body.source = expression.finalElement as? LeafPsiElement val innerContext = context.newDeclaration(descriptor).translateAndAliasParameters(descriptor, function.parameters) if (descriptor.isSuspend) { diff --git a/js/js.translator/src/org/jetbrains/kotlin/js/translate/declaration/PropertyTranslator.kt b/js/js.translator/src/org/jetbrains/kotlin/js/translate/declaration/PropertyTranslator.kt index f4e260e34a5..4ba99cb19f4 100644 --- a/js/js.translator/src/org/jetbrains/kotlin/js/translate/declaration/PropertyTranslator.kt +++ b/js/js.translator/src/org/jetbrains/kotlin/js/translate/declaration/PropertyTranslator.kt @@ -16,6 +16,7 @@ package org.jetbrains.kotlin.js.translate.declaration +import com.intellij.psi.impl.source.tree.LeafPsiElement import org.jetbrains.kotlin.descriptors.* import org.jetbrains.kotlin.descriptors.impl.LocalVariableAccessorDescriptor import org.jetbrains.kotlin.descriptors.impl.LocalVariableDescriptor @@ -261,14 +262,17 @@ private class PropertyTranslator( private fun translateCustomAccessor(expression: KtPropertyAccessor): JsPropertyInitializer { val descriptor = BindingUtils.getFunctionDescriptor(bindingContext(), expression) val function = JsFunction(context().getScopeForDescriptor(descriptor), JsBlock(), descriptor.toString()) - function.source = expression.finalElement + function.source = expression + function.body.source = expression.finalElement as? LeafPsiElement context().translateAndAliasParameters(descriptor, function.parameters).translateFunction(expression, function) return translateFunctionAsEcma5PropertyDescriptor(function, descriptor, context()) } private fun createFunction(descriptor: VariableAccessorDescriptor): JsFunction { val function = JsFunction(context().getScopeForDescriptor(descriptor), JsBlock(), accessorDescription(descriptor)) - function.source = descriptor.source.getPsi()?.finalElement + val psi = descriptor.source.getPsi() + function.source = psi + function.body.source = psi?.finalElement as? LeafPsiElement return function } diff --git a/js/js.translator/src/org/jetbrains/kotlin/js/translate/expression/LiteralFunctionTranslator.kt b/js/js.translator/src/org/jetbrains/kotlin/js/translate/expression/LiteralFunctionTranslator.kt index ae980d055ff..e730bdf95d4 100644 --- a/js/js.translator/src/org/jetbrains/kotlin/js/translate/expression/LiteralFunctionTranslator.kt +++ b/js/js.translator/src/org/jetbrains/kotlin/js/translate/expression/LiteralFunctionTranslator.kt @@ -16,6 +16,7 @@ package org.jetbrains.kotlin.js.translate.expression +import com.intellij.psi.impl.source.tree.LeafPsiElement import org.jetbrains.kotlin.descriptors.* import org.jetbrains.kotlin.descriptors.impl.ValueParameterDescriptorImpl import org.jetbrains.kotlin.js.backend.ast.* @@ -64,7 +65,8 @@ class LiteralFunctionTranslator(context: TranslationContext) : AbstractTranslato lambda.body.statements += setDefaultValueForArguments(descriptor, functionContext) lambda.body.statements += translateFunctionBody(descriptor, declaration, functionContext) lambda.functionDescriptor = descriptor - lambda.source = finalElement + lambda.source = declaration + lambda.body.source = finalElement as? LeafPsiElement val tracker = functionContext.usageTracker()!! diff --git a/js/js.translator/src/org/jetbrains/kotlin/js/translate/reference/CallableReferenceTranslator.kt b/js/js.translator/src/org/jetbrains/kotlin/js/translate/reference/CallableReferenceTranslator.kt index 7b92373c02a..7da092f33db 100644 --- a/js/js.translator/src/org/jetbrains/kotlin/js/translate/reference/CallableReferenceTranslator.kt +++ b/js/js.translator/src/org/jetbrains/kotlin/js/translate/reference/CallableReferenceTranslator.kt @@ -16,6 +16,7 @@ package org.jetbrains.kotlin.js.translate.reference +import com.intellij.psi.impl.source.tree.LeafPsiElement import org.jetbrains.kotlin.backend.common.CodegenUtil import org.jetbrains.kotlin.descriptors.* import org.jetbrains.kotlin.js.backend.ast.* @@ -204,7 +205,7 @@ object CallableReferenceTranslator { translator: (TranslationContext, ResolvedCall, JsExpression, JsExpression?) -> JsExpression ): JsExpression { val accessorFunction = JsFunction(context.scope(), JsBlock(), "") - accessorFunction.source = expression.finalElement + accessorFunction.source = expression val accessorContext = context.innerBlock(accessorFunction.body) val receiverParam = if (descriptor.dispatchReceiverParameter != null || descriptor.extensionReceiverParameter != null) { val name = JsScope.declareTemporaryName(Namer.getReceiverParameterName()) @@ -226,6 +227,7 @@ object CallableReferenceTranslator { val accessorResult = translator(accessorContext, call, valueParam, receiverParam) accessorFunction.body.statements += if (isSetter) accessorResult.makeStmt() else JsReturn(accessorResult) + accessorFunction.body.source = expression.finalElement as? LeafPsiElement return bindIfNecessary(accessorFunction, receiver) } diff --git a/js/js.translator/src/org/jetbrains/kotlin/js/translate/utils/utils.kt b/js/js.translator/src/org/jetbrains/kotlin/js/translate/utils/utils.kt index dd240727ff9..c065ad3da71 100644 --- a/js/js.translator/src/org/jetbrains/kotlin/js/translate/utils/utils.kt +++ b/js/js.translator/src/org/jetbrains/kotlin/js/translate/utils/utils.kt @@ -7,6 +7,7 @@ package org.jetbrains.kotlin.js.translate.utils import com.intellij.lang.ASTNode import com.intellij.psi.PsiElement +import com.intellij.psi.impl.source.tree.LeafPsiElement import com.intellij.util.SmartList import org.jetbrains.kotlin.backend.common.COROUTINE_SUSPENDED_NAME import org.jetbrains.kotlin.builtins.KotlinBuiltIns @@ -90,7 +91,8 @@ fun generateDelegateCall( invocation.source = source val functionObject = simpleReturnFunction(context.scope(), invocation) - functionObject.source = source?.finalElement + functionObject.source = source + functionObject.body.source = source?.finalElement as? LeafPsiElement functionObject.parameters.addAll(parameters) if (functionObject.isSuspend) { functionObject.fillCoroutineMetadata(context, fromDescriptor, false) diff --git a/js/js.translator/testData/lineNumbers/andAndWithSideEffect.kt b/js/js.translator/testData/lineNumbers/andAndWithSideEffect.kt index adb519735b3..d7a2c164218 100644 --- a/js/js.translator/testData/lineNumbers/andAndWithSideEffect.kt +++ b/js/js.translator/testData/lineNumbers/andAndWithSideEffect.kt @@ -6,4 +6,4 @@ fun box(x: Int, y: Int) { fun foo(x: Int) = x -// LINES: 5 3 3 4 3 3 3 3 * 3 3 4 4 4 4 * 4 4 4 4 2 3 7 7 7 \ No newline at end of file +// LINES: 1 5 3 3 4 3 3 3 3 * 3 3 4 4 4 4 * 4 4 4 4 2 3 7 7 7 \ No newline at end of file diff --git a/js/js.translator/testData/lineNumbers/backingField.kt b/js/js.translator/testData/lineNumbers/backingField.kt index a7a0f58cd99..87b540fa424 100644 --- a/js/js.translator/testData/lineNumbers/backingField.kt +++ b/js/js.translator/testData/lineNumbers/backingField.kt @@ -12,4 +12,4 @@ open class A { } } -// LINES: 1 2 2 4 4 2 2 2 2 5 5 5 6 12 8 9 10 11 \ No newline at end of file +// LINES: 1 2 2 4 4 2 2 2 2 5 5 5 6 7 12 8 9 10 11 \ No newline at end of file diff --git a/js/js.translator/testData/lineNumbers/catch.kt b/js/js.translator/testData/lineNumbers/catch.kt index 839ed2eba0a..90572e29d9a 100644 --- a/js/js.translator/testData/lineNumbers/catch.kt +++ b/js/js.translator/testData/lineNumbers/catch.kt @@ -19,4 +19,4 @@ fun bar() { } } -// LINES: 11 3 3 5 5 6 6 8 8 9 9 2 2 * 20 15 15 18 18 \ No newline at end of file +// LINES: 1 11 3 3 5 5 6 6 8 8 9 9 2 2 * 13 20 15 15 18 18 \ No newline at end of file diff --git a/js/js.translator/testData/lineNumbers/chainedCall.kt b/js/js.translator/testData/lineNumbers/chainedCall.kt index 7ac40b7b9f6..03bdea5a8a0 100644 --- a/js/js.translator/testData/lineNumbers/chainedCall.kt +++ b/js/js.translator/testData/lineNumbers/chainedCall.kt @@ -14,4 +14,4 @@ class C { val baz: dynamic get() = null } -// LINES: 9 2 4 3 2 6 8 7 6 11 12 12 12 14 14 14 \ No newline at end of file +// LINES: 1 9 2 4 3 2 6 8 7 6 11 12 12 12 14 14 14 \ No newline at end of file diff --git a/js/js.translator/testData/lineNumbers/classCapturingLocals.kt b/js/js.translator/testData/lineNumbers/classCapturingLocals.kt index 7a25112dcc9..79a816e78ee 100644 --- a/js/js.translator/testData/lineNumbers/classCapturingLocals.kt +++ b/js/js.translator/testData/lineNumbers/classCapturingLocals.kt @@ -14,4 +14,4 @@ fun A.foo() { fun baz() = 23 -// LINES: 1 * 5 5 5 9 7 7 8 8 * 13 4 4 11 11 12 12 15 15 15 \ No newline at end of file +// LINES: 1 * 5 5 5 6 9 7 7 8 8 * 3 13 4 4 11 11 12 12 15 15 15 \ No newline at end of file diff --git a/js/js.translator/testData/lineNumbers/closure.kt b/js/js.translator/testData/lineNumbers/closure.kt index 92e56d70d87..d3c2c2483d7 100644 --- a/js/js.translator/testData/lineNumbers/closure.kt +++ b/js/js.translator/testData/lineNumbers/closure.kt @@ -5,4 +5,4 @@ fun box(x: Int, y: Int): Int { return foo(y) } -// LINES: 2 2 2 4 4 6 2 2 5 5 \ No newline at end of file +// LINES: 2 2 2 4 4 1 6 2 2 5 5 \ No newline at end of file diff --git a/js/js.translator/testData/lineNumbers/complexExpressionAsDefaultArgument.kt b/js/js.translator/testData/lineNumbers/complexExpressionAsDefaultArgument.kt index ac8cd7d3622..5b55937e03c 100644 --- a/js/js.translator/testData/lineNumbers/complexExpressionAsDefaultArgument.kt +++ b/js/js.translator/testData/lineNumbers/complexExpressionAsDefaultArgument.kt @@ -11,4 +11,4 @@ fun baz() = 1 fun bar() = 2 -// LINES: 8 3 3 2 2 4 3 4 4 4 5 5 2 8 8 10 10 10 12 12 12 \ No newline at end of file +// LINES: 1 3 3 2 2 4 3 4 4 4 5 5 2 8 8 10 10 10 12 12 12 \ No newline at end of file diff --git a/js/js.translator/testData/lineNumbers/conditionalDecomposed.kt b/js/js.translator/testData/lineNumbers/conditionalDecomposed.kt index 195585c8a05..3f290e5a7ac 100644 --- a/js/js.translator/testData/lineNumbers/conditionalDecomposed.kt +++ b/js/js.translator/testData/lineNumbers/conditionalDecomposed.kt @@ -14,4 +14,4 @@ private inline fun foo(): Int { return 23 } -// LINES: 10 3 3 3 4 3 6 13 13 3 14 2 15 13 13 14 14 \ No newline at end of file +// LINES: 1 10 3 3 3 4 3 6 13 13 3 14 2 12 15 13 13 14 14 \ No newline at end of file diff --git a/js/js.translator/testData/lineNumbers/coroutine.kt b/js/js.translator/testData/lineNumbers/coroutine.kt index 4e936587164..a73d4107732 100644 --- a/js/js.translator/testData/lineNumbers/coroutine.kt +++ b/js/js.translator/testData/lineNumbers/coroutine.kt @@ -14,4 +14,4 @@ suspend fun bar(): Unit { println(a + b) } -// LINES: 38 4 4 4 5 5 44 44 5 89 44 5 5 6 4 4 4 15 9 9 9 * 15 10 10 11 11 11 11 11 * 11 12 12 13 13 13 13 13 13 13 14 14 * 15 9 9 9 9 \ No newline at end of file +// LINES: 38 4 4 4 7 5 5 44 44 5 89 44 5 5 6 4 4 4 9 15 9 9 9 * 9 15 10 10 11 11 11 11 11 * 11 12 12 13 13 13 13 13 13 13 14 14 * 9 15 9 9 9 9 \ No newline at end of file diff --git a/js/js.translator/testData/lineNumbers/coroutineNullAssertion.kt b/js/js.translator/testData/lineNumbers/coroutineNullAssertion.kt index 20691a7181b..878058ba895 100644 --- a/js/js.translator/testData/lineNumbers/coroutineNullAssertion.kt +++ b/js/js.translator/testData/lineNumbers/coroutineNullAssertion.kt @@ -8,4 +8,4 @@ suspend fun foo() { suspend fun delay() { } -// LINES: 6 1 1 * 6 2 2 2 2 2 * 3 3 4 4 4 4 4 5 5 * 6 1 1 1 1 9 \ No newline at end of file +// LINES: 1 6 1 1 * 1 6 2 2 2 2 2 * 3 3 4 4 4 4 4 5 5 * 1 6 1 1 1 1 8 9 \ No newline at end of file diff --git a/js/js.translator/testData/lineNumbers/delegateMemberVal.kt b/js/js.translator/testData/lineNumbers/delegateMemberVal.kt index ea5080f7dee..d7f630faa47 100644 --- a/js/js.translator/testData/lineNumbers/delegateMemberVal.kt +++ b/js/js.translator/testData/lineNumbers/delegateMemberVal.kt @@ -13,4 +13,4 @@ class Delegate(val f: () -> Int) { } } -// LINES: 1 2 3 * 2 2 3 3 3 * 8 7 7 10 10 13 12 12 +// LINES: 1 2 3 * 2 2 3 3 3 3 * 6 8 7 7 10 10 11 13 12 12 diff --git a/js/js.translator/testData/lineNumbers/delegatedProperty.kt b/js/js.translator/testData/lineNumbers/delegatedProperty.kt index 4a362bad167..7f68f7107ec 100644 --- a/js/js.translator/testData/lineNumbers/delegatedProperty.kt +++ b/js/js.translator/testData/lineNumbers/delegatedProperty.kt @@ -15,4 +15,4 @@ class B { } } -// LINES: 3 4 5 * 4 4 4 * 8 11 10 10 15 14 14 \ No newline at end of file +// LINES: 3 4 5 * 4 4 4 * 8 9 11 10 10 13 15 14 14 \ No newline at end of file diff --git a/js/js.translator/testData/lineNumbers/delegation.kt b/js/js.translator/testData/lineNumbers/delegation.kt index 043a6396710..028768742d4 100644 --- a/js/js.translator/testData/lineNumbers/delegation.kt +++ b/js/js.translator/testData/lineNumbers/delegation.kt @@ -18,4 +18,4 @@ val o = object : I { } } -// LINES: 1 2 3 2 2 2 2 2 2 2 * 11 12 12 12 15 15 15 18 17 17 \ No newline at end of file +// LINES: 1 2 3 2 2 2 2 2 2 2 * 11 12 12 12 15 15 15 16 18 17 17 \ No newline at end of file diff --git a/js/js.translator/testData/lineNumbers/destructuring.kt b/js/js.translator/testData/lineNumbers/destructuring.kt index 0f723b38014..9a4762426b3 100644 --- a/js/js.translator/testData/lineNumbers/destructuring.kt +++ b/js/js.translator/testData/lineNumbers/destructuring.kt @@ -27,4 +27,4 @@ fun bar(f: (Pair) -> Unit) { } -// LINES: 22 16 16 17 18 20 20 21 21 22 22 23 9 9 9 9 4 9 9 9 5 5 6 7 11 11 12 12 15 15 27 26 26 * 1 * 1 \ No newline at end of file +// LINES: 15 22 16 16 17 18 20 20 21 21 22 22 3 23 9 9 9 9 4 9 9 9 5 5 6 7 11 11 12 12 15 15 25 27 26 26 * 1 * 1 \ No newline at end of file diff --git a/js/js.translator/testData/lineNumbers/destructuringInline.kt b/js/js.translator/testData/lineNumbers/destructuringInline.kt index f095584150c..fbfa4dac469 100644 --- a/js/js.translator/testData/lineNumbers/destructuringInline.kt +++ b/js/js.translator/testData/lineNumbers/destructuringInline.kt @@ -32,4 +32,4 @@ inline operator fun P.component1() = a inline operator fun P.component2() = b -// LINES: 22 17 17 31 18 18 33 20 20 21 21 22 22 23 9 9 9 9 4 9 9 9 6 6 31 7 7 33 11 11 12 12 15 15 27 26 26 29 29 29 * 31 31 31 33 33 33 * 1 * 1 \ No newline at end of file +// LINES: 15 22 17 17 31 18 18 33 20 20 21 21 22 22 3 23 9 9 9 9 4 9 9 9 6 6 31 7 7 33 11 11 12 12 15 15 25 27 26 26 29 29 29 * 31 31 31 33 33 33 * 1 * 1 \ No newline at end of file diff --git a/js/js.translator/testData/lineNumbers/doWhileWithComplexCondition.kt b/js/js.translator/testData/lineNumbers/doWhileWithComplexCondition.kt index 7822ab40328..3011ad76091 100644 --- a/js/js.translator/testData/lineNumbers/doWhileWithComplexCondition.kt +++ b/js/js.translator/testData/lineNumbers/doWhileWithComplexCondition.kt @@ -13,4 +13,4 @@ fun box() { ) } -// LINES: 14 8 8 7 3 2 2 3 3 3 8 8 11 11 * 3 7 12 3 3 4 4 \ No newline at end of file +// LINES: 1 14 8 8 7 3 2 2 3 3 3 8 8 11 11 * 3 7 12 3 3 4 4 \ No newline at end of file diff --git a/js/js.translator/testData/lineNumbers/elvis.kt b/js/js.translator/testData/lineNumbers/elvis.kt index c9de55ab3b1..f46606369c0 100644 --- a/js/js.translator/testData/lineNumbers/elvis.kt +++ b/js/js.translator/testData/lineNumbers/elvis.kt @@ -9,4 +9,4 @@ fun box(x: String?) { fun foo() = "bar" -// LINES: 8 7 7 4 4 4 5 5 7 7 7 7 * 5 4 5 10 10 10 * 1 * 1 \ No newline at end of file +// LINES: 3 8 7 7 4 4 4 5 5 7 7 7 7 * 5 4 5 10 10 10 * 1 * 1 \ No newline at end of file diff --git a/js/js.translator/testData/lineNumbers/expressionAsFunctionBody.kt b/js/js.translator/testData/lineNumbers/expressionAsFunctionBody.kt index b050990fc52..02bb593112f 100644 --- a/js/js.translator/testData/lineNumbers/expressionAsFunctionBody.kt +++ b/js/js.translator/testData/lineNumbers/expressionAsFunctionBody.kt @@ -4,4 +4,4 @@ fun box() = fun foo() = 23 -// LINES: 2 2 2 5 5 5 \ No newline at end of file +// LINES: 1 2 2 4 5 5 \ No newline at end of file diff --git a/js/js.translator/testData/lineNumbers/for.kt b/js/js.translator/testData/lineNumbers/for.kt index 9105c2afb29..0ddc03ee7a3 100644 --- a/js/js.translator/testData/lineNumbers/for.kt +++ b/js/js.translator/testData/lineNumbers/for.kt @@ -17,4 +17,4 @@ fun box() { } } -// LINES: 18 2 2 10 2 2 2 2 2 2 3 3 6 6 6 6 7 7 10 10 10 10 10 10 11 11 14 14 15 15 15 15 16 16 \ No newline at end of file +// LINES: 1 18 2 2 10 2 2 2 2 2 2 3 3 6 6 6 6 7 7 10 10 10 10 10 10 11 11 14 14 15 15 15 15 16 16 \ No newline at end of file diff --git a/js/js.translator/testData/lineNumbers/increment.kt b/js/js.translator/testData/lineNumbers/increment.kt index 7cf113c3d20..152426ab05c 100644 --- a/js/js.translator/testData/lineNumbers/increment.kt +++ b/js/js.translator/testData/lineNumbers/increment.kt @@ -8,4 +8,4 @@ fun foo(x: Int) { println(y) } -// LINES: 9 2 2 3 3 4 4 5 5 6 6 7 7 8 8 \ No newline at end of file +// LINES: 1 9 2 2 3 3 4 4 5 5 6 6 7 7 8 8 \ No newline at end of file diff --git a/js/js.translator/testData/lineNumbers/inlineArguments.kt b/js/js.translator/testData/lineNumbers/inlineArguments.kt index 8e01ac5c37f..347a1a39a9b 100644 --- a/js/js.translator/testData/lineNumbers/inlineArguments.kt +++ b/js/js.translator/testData/lineNumbers/inlineArguments.kt @@ -11,4 +11,4 @@ inline fun foo(x: Int) { fun bar() = 23 -// LINES: 5 4 4 8 8 9 9 10 8 8 9 9 12 12 12 * 1 * 1 \ No newline at end of file +// LINES: 3 5 4 4 8 8 9 9 7 10 8 8 9 9 12 12 12 * 1 * 1 \ No newline at end of file diff --git a/js/js.translator/testData/lineNumbers/inlineLocalVarsRef.kt b/js/js.translator/testData/lineNumbers/inlineLocalVarsRef.kt index 490dd46f90f..53884d97534 100644 --- a/js/js.translator/testData/lineNumbers/inlineLocalVarsRef.kt +++ b/js/js.translator/testData/lineNumbers/inlineLocalVarsRef.kt @@ -9,4 +9,4 @@ fun bar() { foo(42) } -// LINES: 1 1 1 1 1 6 2 2 3 3 4 4 10 2 2 9 2 3 3 4 4 \ No newline at end of file +// LINES: 1 1 1 1 1 6 2 2 3 3 4 4 8 10 2 2 9 2 3 3 4 4 \ No newline at end of file diff --git a/js/js.translator/testData/lineNumbers/inlineMultiModule/simple.kt b/js/js.translator/testData/lineNumbers/inlineMultiModule/simple.kt index f17a81d4160..9f3e71a7f32 100644 --- a/js/js.translator/testData/lineNumbers/inlineMultiModule/simple.kt +++ b/js/js.translator/testData/lineNumbers/inlineMultiModule/simple.kt @@ -21,4 +21,4 @@ fun box() { foo("42") } -// LINES: 6 22 7 7 20 7 8 8 20 8 7 7 21 7 8 8 21 8 \ No newline at end of file +// LINES: 6 19 22 7 7 20 7 8 8 20 8 7 7 21 7 8 8 21 8 \ No newline at end of file diff --git a/js/js.translator/testData/lineNumbers/inlineReturn.kt b/js/js.translator/testData/lineNumbers/inlineReturn.kt index 244bc18ee26..a34a4878d95 100644 --- a/js/js.translator/testData/lineNumbers/inlineReturn.kt +++ b/js/js.translator/testData/lineNumbers/inlineReturn.kt @@ -21,4 +21,4 @@ fun bar(x: Int) { println("%") } -// LINES: 1 1 1 1 1 1 1 1 1 17 2 2 3 3 4 7 7 9 9 10 10 11 14 14 16 16 22 20 20 20 20 2 2 3 3 4 3 7 7 9 9 10 10 11 10 14 14 16 16 * 20 21 21 \ No newline at end of file +// LINES: 1 1 1 1 1 1 1 1 1 17 2 2 3 3 4 7 7 9 9 10 10 11 14 14 16 16 19 22 20 20 20 20 17 2 2 3 3 4 3 7 7 9 9 10 10 11 10 14 14 16 16 20 21 21 \ No newline at end of file diff --git a/js/js.translator/testData/lineNumbers/inlining.kt b/js/js.translator/testData/lineNumbers/inlining.kt index 6d2f4359a9b..142dd8c6234 100644 --- a/js/js.translator/testData/lineNumbers/inlining.kt +++ b/js/js.translator/testData/lineNumbers/inlining.kt @@ -11,4 +11,4 @@ inline fun bar() { println("bar2") } -// LINES: 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: 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 diff --git a/js/js.translator/testData/lineNumbers/inliningWithLambda.kt b/js/js.translator/testData/lineNumbers/inliningWithLambda.kt index e2cda349b96..4cf3ba6aeb2 100644 --- a/js/js.translator/testData/lineNumbers/inliningWithLambda.kt +++ b/js/js.translator/testData/lineNumbers/inliningWithLambda.kt @@ -16,4 +16,4 @@ inline fun foo(f: () -> Unit) { println("after") } -// LINES: 11 2 2 14 14 4 4 16 16 6 6 14 14 8 8 16 16 10 10 13 13 13 13 13 17 14 14 15 15 16 16 \ No newline at end of file +// LINES: 1 11 2 2 14 14 4 4 16 16 6 6 14 14 8 8 16 16 10 10 13 13 13 13 13 17 14 14 15 15 16 16 \ No newline at end of file diff --git a/js/js.translator/testData/lineNumbers/innerClass.kt b/js/js.translator/testData/lineNumbers/innerClass.kt index 976ab54c117..7e0f1000832 100644 --- a/js/js.translator/testData/lineNumbers/innerClass.kt +++ b/js/js.translator/testData/lineNumbers/innerClass.kt @@ -6,4 +6,4 @@ class A(val x: Int) { } } -// LINES: 1 1 2 2 5 4 4 \ No newline at end of file +// LINES: 1 1 2 2 3 5 4 4 \ No newline at end of file diff --git a/js/js.translator/testData/lineNumbers/isOperator.kt b/js/js.translator/testData/lineNumbers/isOperator.kt index e072670e52e..01d12193de7 100644 --- a/js/js.translator/testData/lineNumbers/isOperator.kt +++ b/js/js.translator/testData/lineNumbers/isOperator.kt @@ -11,4 +11,4 @@ inline fun foo(): Boolean { return true } -// LINES: 7 4 4 4 10 10 4 11 4 5 5 12 10 10 11 11 * 1 * 1 \ No newline at end of file +// LINES: 3 7 4 4 4 10 10 4 11 4 5 5 9 12 10 10 11 11 * 1 * 1 \ No newline at end of file diff --git a/js/js.translator/testData/lineNumbers/jsCode.kt b/js/js.translator/testData/lineNumbers/jsCode.kt index 735dbaa1f69..c7dcb172bec 100644 --- a/js/js.translator/testData/lineNumbers/jsCode.kt +++ b/js/js.translator/testData/lineNumbers/jsCode.kt @@ -5,4 +5,4 @@ fun foo() { println("after: $x") } -// LINES: 6 2 2 3 3 4 4 5 5 \ No newline at end of file +// LINES: 1 6 2 2 3 3 4 4 5 5 \ No newline at end of file diff --git a/js/js.translator/testData/lineNumbers/lambdaWithClosure.kt b/js/js.translator/testData/lineNumbers/lambdaWithClosure.kt index e1375ae8f65..251eb8f4c1f 100644 --- a/js/js.translator/testData/lineNumbers/lambdaWithClosure.kt +++ b/js/js.translator/testData/lineNumbers/lambdaWithClosure.kt @@ -4,4 +4,4 @@ fun foo(x: Int): () -> Unit = { fun bar() = 23 -// LINES: 1 1 1 2 2 3 3 1 1 1 5 5 5 \ No newline at end of file +// LINES: 1 1 1 3 2 2 3 3 1 1 1 5 5 5 \ No newline at end of file diff --git a/js/js.translator/testData/lineNumbers/lastExpressionInInlineLambda.kt b/js/js.translator/testData/lineNumbers/lastExpressionInInlineLambda.kt index cdf298b36bd..043b9802b7d 100644 --- a/js/js.translator/testData/lineNumbers/lastExpressionInInlineLambda.kt +++ b/js/js.translator/testData/lineNumbers/lastExpressionInInlineLambda.kt @@ -24,4 +24,4 @@ fun baz() = "baz" fun boo() = "boo" -// LINES: 17 4 6 6 7 7 3 3 3 * 13 12 13 13 14 21 20 20 23 23 23 25 25 25 \ No newline at end of file +// LINES: 1 17 9 4 6 6 7 7 3 3 3 * 13 12 13 13 14 19 21 20 20 23 23 23 25 25 25 \ No newline at end of file diff --git a/js/js.translator/testData/lineNumbers/literals.kt b/js/js.translator/testData/lineNumbers/literals.kt index 22de54904d1..d3c9da5f054 100644 --- a/js/js.translator/testData/lineNumbers/literals.kt +++ b/js/js.translator/testData/lineNumbers/literals.kt @@ -26,4 +26,4 @@ fun bar(vararg x: Any?) { println(x) } -// LINES: 1 22 3 4 5 6 7 8 9 10 13 14 15 16 17 18 19 20 * 27 26 26 \ No newline at end of file +// LINES: 1 2 22 3 4 5 6 7 8 9 10 13 14 15 16 17 18 19 20 * 25 27 26 26 \ No newline at end of file diff --git a/js/js.translator/testData/lineNumbers/longLiteral.kt b/js/js.translator/testData/lineNumbers/longLiteral.kt index 2dfe77febfb..de7fc097f23 100644 --- a/js/js.translator/testData/lineNumbers/longLiteral.kt +++ b/js/js.translator/testData/lineNumbers/longLiteral.kt @@ -5,4 +5,4 @@ fun foo() { 0L) } -// LINES: 3 * 5 6 2 4 \ No newline at end of file +// LINES: 3 * 5 1 6 2 4 \ No newline at end of file diff --git a/js/js.translator/testData/lineNumbers/memberFunWithDefaultParam.kt b/js/js.translator/testData/lineNumbers/memberFunWithDefaultParam.kt index 144cfe0081f..3d5c3608e37 100644 --- a/js/js.translator/testData/lineNumbers/memberFunWithDefaultParam.kt +++ b/js/js.translator/testData/lineNumbers/memberFunWithDefaultParam.kt @@ -10,4 +10,4 @@ class B : A() { } } -// LINES: 1 2 2 2 2 2 2 2 2 2 4 4 4 * 7 7 10 9 9 +// LINES: 1 2 2 2 2 2 2 2 2 2 4 4 4 * 7 7 8 10 9 9 diff --git a/js/js.translator/testData/lineNumbers/multipleReferences.kt b/js/js.translator/testData/lineNumbers/multipleReferences.kt index 185b01f8ff1..df3e574fc53 100644 --- a/js/js.translator/testData/lineNumbers/multipleReferences.kt +++ b/js/js.translator/testData/lineNumbers/multipleReferences.kt @@ -12,4 +12,4 @@ object O { val y = 23 } -// LINES: 9 2 2 3 3 4 4 6 6 7 7 8 8 11 11 12 12 * 11 11 11 11 11 11 +// LINES: 1 9 2 2 3 3 4 4 6 6 7 7 8 8 11 11 12 12 * 11 11 11 11 11 11 diff --git a/js/js.translator/testData/lineNumbers/objectInstanceFunction.kt b/js/js.translator/testData/lineNumbers/objectInstanceFunction.kt index 34f6de14a3c..68d2efd08c8 100644 --- a/js/js.translator/testData/lineNumbers/objectInstanceFunction.kt +++ b/js/js.translator/testData/lineNumbers/objectInstanceFunction.kt @@ -4,4 +4,4 @@ fun foo() { println("foo") } -// LINES: 1 1 * 1 1 1 1 1 1 5 4 4 \ No newline at end of file +// LINES: 1 1 * 1 1 1 1 1 1 3 5 4 4 \ No newline at end of file diff --git a/js/js.translator/testData/lineNumbers/optionalArgs.kt b/js/js.translator/testData/lineNumbers/optionalArgs.kt index c006b54e865..79dc057e42f 100644 --- a/js/js.translator/testData/lineNumbers/optionalArgs.kt +++ b/js/js.translator/testData/lineNumbers/optionalArgs.kt @@ -7,4 +7,4 @@ fun box( println(y) } -// LINES: 8 2 2 2 2 3 3 3 4 6 6 7 7 \ No newline at end of file +// LINES: 1 8 2 2 2 2 3 3 3 4 6 6 7 7 \ No newline at end of file diff --git a/js/js.translator/testData/lineNumbers/simple.kt b/js/js.translator/testData/lineNumbers/simple.kt index 7117aa62005..9e43a6d6a88 100644 --- a/js/js.translator/testData/lineNumbers/simple.kt +++ b/js/js.translator/testData/lineNumbers/simple.kt @@ -3,4 +3,4 @@ fun box() { println("bar") } -// LINES: 4 2 2 3 3 \ No newline at end of file +// LINES: 1 4 2 2 3 3 \ No newline at end of file diff --git a/js/js.translator/testData/lineNumbers/stringLiteral.kt b/js/js.translator/testData/lineNumbers/stringLiteral.kt index fa9ee3d8d71..a0fc32c8017 100644 --- a/js/js.translator/testData/lineNumbers/stringLiteral.kt +++ b/js/js.translator/testData/lineNumbers/stringLiteral.kt @@ -4,4 +4,4 @@ fun box(x: Int): String { "suffix" } -// LINES: 5 2 2 3 4 \ No newline at end of file +// LINES: 1 5 2 2 3 4 \ No newline at end of file diff --git a/js/js.translator/testData/lineNumbers/valParameter.kt b/js/js.translator/testData/lineNumbers/valParameter.kt index b3f89d4e46c..0a9189a202a 100644 --- a/js/js.translator/testData/lineNumbers/valParameter.kt +++ b/js/js.translator/testData/lineNumbers/valParameter.kt @@ -7,4 +7,4 @@ fun foo() { A(23, "foo") } -// LINES: 1 2 3 * 8 7 7 \ No newline at end of file +// LINES: 1 2 3 * 6 8 7 7 \ No newline at end of file diff --git a/js/js.translator/testData/lineNumbers/whenEntryWithMultipleConditions.kt b/js/js.translator/testData/lineNumbers/whenEntryWithMultipleConditions.kt index e8ff31e3d36..acaa4a7e374 100644 --- a/js/js.translator/testData/lineNumbers/whenEntryWithMultipleConditions.kt +++ b/js/js.translator/testData/lineNumbers/whenEntryWithMultipleConditions.kt @@ -18,4 +18,4 @@ fun box(x: Int) { ) } -// LINES: 19 4 4 3 3 4 6 9 9 6 11 13 13 11 16 16 3 2 \ No newline at end of file +// LINES: 1 19 4 4 3 3 4 6 9 9 6 11 13 13 11 16 16 3 2 \ No newline at end of file diff --git a/js/js.translator/testData/lineNumbers/whenEntryWithMultipleConditionsNonOptimized.kt b/js/js.translator/testData/lineNumbers/whenEntryWithMultipleConditionsNonOptimized.kt index 41044b22d35..2882386a5df 100644 --- a/js/js.translator/testData/lineNumbers/whenEntryWithMultipleConditionsNonOptimized.kt +++ b/js/js.translator/testData/lineNumbers/whenEntryWithMultipleConditionsNonOptimized.kt @@ -28,4 +28,4 @@ fun four() = 4 fun five() = 5 -// LINES: 19 4 4 3 6 4 6 4 7 4 8 9 9 11 4 11 4 12 13 13 16 16 2 21 21 21 23 23 23 25 25 25 27 27 27 29 29 29 \ No newline at end of file +// LINES: 1 19 4 4 3 6 4 6 4 7 4 8 9 9 11 4 11 4 12 13 13 16 16 2 21 21 21 23 23 23 25 25 25 27 27 27 29 29 29 \ No newline at end of file diff --git a/js/js.translator/testData/lineNumbers/whenIn.kt b/js/js.translator/testData/lineNumbers/whenIn.kt index ce220540660..245142865c3 100644 --- a/js/js.translator/testData/lineNumbers/whenIn.kt +++ b/js/js.translator/testData/lineNumbers/whenIn.kt @@ -13,4 +13,4 @@ fun foo(): Int = 23 fun bar(): IntRange = 1000..2000 -// LINES: 10 2 2 2 2 3 3 4 4 5 5 6 6 7 7 8 8 12 12 12 14 14 14 \ No newline at end of file +// LINES: 1 10 2 2 2 2 3 3 4 4 5 5 6 6 7 7 8 8 12 12 12 14 14 14 \ No newline at end of file diff --git a/js/js.translator/testData/lineNumbers/whenIs.kt b/js/js.translator/testData/lineNumbers/whenIs.kt index 218077725d7..a5a2c15fbfd 100644 --- a/js/js.translator/testData/lineNumbers/whenIs.kt +++ b/js/js.translator/testData/lineNumbers/whenIs.kt @@ -13,4 +13,4 @@ open class A open class B : A() -// LINES: 10 2 2 2 2 3 3 4 4 5 5 6 6 8 8 12 * 14 14 \ No newline at end of file +// LINES: 1 10 2 2 2 2 3 3 4 4 5 5 6 6 8 8 12 * 14 14 \ No newline at end of file diff --git a/js/js.translator/testData/lineNumbers/whileWithComplexCondition.kt b/js/js.translator/testData/lineNumbers/whileWithComplexCondition.kt index d82b24be5ab..f61619bf4bc 100644 --- a/js/js.translator/testData/lineNumbers/whileWithComplexCondition.kt +++ b/js/js.translator/testData/lineNumbers/whileWithComplexCondition.kt @@ -12,4 +12,4 @@ fun box() { } } -// LINES: 13 5 5 4 2 2 3 5 5 8 8 * 3 4 9 3 11 11 \ No newline at end of file +// LINES: 1 13 5 5 4 2 2 3 5 5 8 8 * 3 4 9 3 11 11 \ No newline at end of file diff --git a/js/js.translator/testData/sourcemap/expressionBody.kt b/js/js.translator/testData/sourcemap/expressionBody.kt new file mode 100644 index 00000000000..5ed97876715 --- /dev/null +++ b/js/js.translator/testData/sourcemap/expressionBody.kt @@ -0,0 +1,13 @@ +package foo + +fun test1() = "O" +fun test2(s: String): String { + return s +} + +fun test(s:String) = + test1() + + test2(s) + +fun box() + = test("K") \ No newline at end of file