diff --git a/js/js.tests/test/org/jetbrains/kotlin/js/test/JsLineNumberTestGenerated.java b/js/js.tests/test/org/jetbrains/kotlin/js/test/JsLineNumberTestGenerated.java index 3e1266eafe9..1de9aed424d 100644 --- a/js/js.tests/test/org/jetbrains/kotlin/js/test/JsLineNumberTestGenerated.java +++ b/js/js.tests/test/org/jetbrains/kotlin/js/test/JsLineNumberTestGenerated.java @@ -120,6 +120,12 @@ public class JsLineNumberTestGenerated extends AbstractJsLineNumberTest { doTest(fileName); } + @TestMetadata("enumObject.kt") + public void testEnumObject() throws Exception { + String fileName = KotlinTestUtils.navigationMetadata("js/js.translator/testData/lineNumbers/enumObject.kt"); + doTest(fileName); + } + @TestMetadata("expressionAsFunctionBody.kt") public void testExpressionAsFunctionBody() throws Exception { String fileName = KotlinTestUtils.navigationMetadata("js/js.translator/testData/lineNumbers/expressionAsFunctionBody.kt"); diff --git a/js/js.translator/src/org/jetbrains/kotlin/js/translate/initializer/ClassInitializerTranslator.java b/js/js.translator/src/org/jetbrains/kotlin/js/translate/initializer/ClassInitializerTranslator.java index 26796fec545..7e2b4616324 100644 --- a/js/js.translator/src/org/jetbrains/kotlin/js/translate/initializer/ClassInitializerTranslator.java +++ b/js/js.translator/src/org/jetbrains/kotlin/js/translate/initializer/ClassInitializerTranslator.java @@ -197,6 +197,7 @@ public final class ClassInitializerTranslator extends AbstractTranslator { if (classDeclaration instanceof KtEnumEntry) { JsExpression expression = CallTranslator.translate(context(), superCall, null); + expression.setSource(classDeclaration); JsExpression fixedInvocation = AstUtilsKt.toInvocationWith( expression, getAdditionalArgumentsForEnumConstructor(), 0, new JsThisRef()); diff --git a/js/js.translator/src/org/jetbrains/kotlin/js/translate/utils/astUtils.kt b/js/js.translator/src/org/jetbrains/kotlin/js/translate/utils/astUtils.kt index 39797a89e3a..73a0c28a396 100644 --- a/js/js.translator/src/org/jetbrains/kotlin/js/translate/utils/astUtils.kt +++ b/js/js.translator/src/org/jetbrains/kotlin/js/translate/utils/astUtils.kt @@ -69,12 +69,12 @@ fun JsExpression.toInvocationWith( is JsNew -> { qualifier = Namer.getFunctionCallRef(constructorExpression) // `new A(a, b, c)` -> `A.call($this, a, b, c)` - return JsInvocation(qualifier, listOf(thisExpr) + leadingExtraArgs + arguments) + return JsInvocation(qualifier, listOf(thisExpr) + leadingExtraArgs + arguments).source(source) } is JsInvocation -> { qualifier = getQualifier() // `A(a, b, c)` -> `A(a, b, c, $this)` - return JsInvocation(qualifier, leadingExtraArgs + padArguments(arguments) + thisExpr) + return JsInvocation(qualifier, leadingExtraArgs + padArguments(arguments) + thisExpr).source(source) } else -> throw IllegalStateException("Unexpected node type: " + this::class.java) } diff --git a/js/js.translator/testData/lineNumbers/enumObject.kt b/js/js.translator/testData/lineNumbers/enumObject.kt new file mode 100644 index 00000000000..3d7efeaf098 --- /dev/null +++ b/js/js.translator/testData/lineNumbers/enumObject.kt @@ -0,0 +1,13 @@ +enum class E { + X, + + Y { + fun foo() = 23 + }, + + Z() { + fun bar() = 42 + } +} + +// LINES: 1 1 1 1 2 4 8 * 2 2 4 4 5 * 4 4 8 8 9 * 8 8 * 1 * 1 1 1 1 1 1 \ No newline at end of file