Fix generation of JS source maps for call expressions

This commit is contained in:
Alexey Andreev
2017-05-10 18:26:09 +03:00
parent 6e489900cb
commit e1009622af
3 changed files with 26 additions and 3 deletions
@@ -36,6 +36,12 @@ public class JsLineNumberTestGenerated extends AbstractJsLineNumberTest {
KotlinTestUtils.assertAllTestsPresentByMetadata(this.getClass(), new File("js/js.translator/testData/lineNumbers"), Pattern.compile("^([^_](.+))\\.kt$"), TargetBackend.JS, true);
}
@TestMetadata("chainedCall.kt")
public void testChainedCall() throws Exception {
String fileName = KotlinTestUtils.navigationMetadata("js/js.translator/testData/lineNumbers/chainedCall.kt");
doTest(fileName);
}
@TestMetadata("closure.kt")
public void testClosure() throws Exception {
String fileName = KotlinTestUtils.navigationMetadata("js/js.translator/testData/lineNumbers/closure.kt");
@@ -44,7 +44,7 @@ object CallTranslator {
resolvedCall: ResolvedCall<out FunctionDescriptor>,
extensionOrDispatchReceiver: JsExpression? = null
): JsExpression {
return translateCall(context, resolvedCall, ExplicitReceivers(extensionOrDispatchReceiver))
return translateCall(context, resolvedCall, ExplicitReceivers(extensionOrDispatchReceiver)).source(resolvedCall.call.callElement)
}
fun translateGet(context: TranslationContext,
@@ -52,7 +52,7 @@ object CallTranslator {
extensionOrDispatchReceiver: JsExpression? = null
): JsExpression {
val variableAccessInfo = VariableAccessInfo(context.getCallInfo(resolvedCall, extensionOrDispatchReceiver), null)
return variableAccessInfo.translateVariableAccess()
return variableAccessInfo.translateVariableAccess().source(resolvedCall.call.callElement)
}
fun translateSet(context: TranslationContext,
@@ -61,7 +61,7 @@ object CallTranslator {
extensionOrDispatchReceiver: JsExpression? = null
): JsExpression {
val variableAccessInfo = VariableAccessInfo(context.getCallInfo(resolvedCall, extensionOrDispatchReceiver), value)
return variableAccessInfo.translateVariableAccess()
return variableAccessInfo.translateVariableAccess().source(resolvedCall.call.callElement)
}
fun buildCall(context: TranslationContext,
+17
View File
@@ -0,0 +1,17 @@
fun box(a: C, x: dynamic) {
println(a
.foo()
.bar())
println(a
.baz
.boo)
}
class C {
fun foo(): dynamic = null
val baz: dynamic get() = null
}
// LINES: 2 4 3 2 6 8 7 6 12 * 14