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 fe7fd587899..2093bb6c102 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 @@ -60,6 +60,12 @@ public class JsLineNumberTestGenerated extends AbstractJsLineNumberTest { doTest(fileName); } + @TestMetadata("charBoxing.kt") + public void testCharBoxing() throws Exception { + String fileName = KotlinTestUtils.navigationMetadata("js/js.translator/testData/lineNumbers/charBoxing.kt"); + doTest(fileName); + } + @TestMetadata("classCapturingLocals.kt") public void testClassCapturingLocals() throws Exception { String fileName = KotlinTestUtils.navigationMetadata("js/js.translator/testData/lineNumbers/classCapturingLocals.kt"); diff --git a/js/js.translator/src/org/jetbrains/kotlin/js/translate/utils/JsAstUtils.java b/js/js.translator/src/org/jetbrains/kotlin/js/translate/utils/JsAstUtils.java index 6235b22ddac..81543c9b629 100644 --- a/js/js.translator/src/org/jetbrains/kotlin/js/translate/utils/JsAstUtils.java +++ b/js/js.translator/src/org/jetbrains/kotlin/js/translate/utils/JsAstUtils.java @@ -159,12 +159,16 @@ public final class JsAstUtils { @NotNull public static JsExpression charToBoxedChar(@NotNull JsExpression expression) { - return withBoxingMetadata(invokeKotlinFunction("toBoxedChar", unnestBoxing(expression))); + JsInvocation invocation = invokeKotlinFunction("toBoxedChar", unnestBoxing(expression)); + invocation.setSource(expression.getSource()); + return withBoxingMetadata(invocation); } @NotNull public static JsExpression boxedCharToChar(@NotNull JsExpression expression) { - return withBoxingMetadata(invokeKotlinFunction("unboxChar", unnestBoxing(expression))); + JsInvocation invocation = invokeKotlinFunction("unboxChar", unnestBoxing(expression)); + invocation.setSource(expression.getSource()); + return withBoxingMetadata(invocation); } @NotNull diff --git a/js/js.translator/testData/lineNumbers/charBoxing.kt b/js/js.translator/testData/lineNumbers/charBoxing.kt new file mode 100644 index 00000000000..4939a1aa5b3 --- /dev/null +++ b/js/js.translator/testData/lineNumbers/charBoxing.kt @@ -0,0 +1,20 @@ +var log = "" + +inline fun String.foo(a: String): Int { + log += "foo1" + return asDynamic().indexOf(a) +} + +inline fun String.foo(a: Char): Int { + log += "foo2" + return indexOf(a.toString()) +} + +fun bar(a: String, b: Char, x: Int) { + log += if (x > 0) + 23 + else + a.foo(b) +} + +// LINES: 6 4 4 5 5 11 9 9 10 10 18 14 14 14 14 14 15 17 9 9 14 10 17 10 14 14 * 1 * 1 \ No newline at end of file