Refactor generator of JS source map

- refactor pipeline for generation of source map
- generate "empty" mappings for nodes that impossible
  to map to something reasonable
- generate more accurate locations in source maps for specific
  JS AST nodes
- for binary operation nodes parser now returns location
  of binary operator tokens instead of location of first operand
- change completely how source map remapper works
This commit is contained in:
Alexey Andreev
2017-06-20 15:34:36 +03:00
parent 6a2f3d8065
commit dea73ebecf
30 changed files with 622 additions and 336 deletions
@@ -6,4 +6,4 @@ fun box(x: Int, y: Int) {
fun foo(x: Int) = x
// LINES: 3 3 3 4 4 4 4 2 3 7
// LINES: 3 3 * 3 4 4 * 4 4 2 3 7
@@ -13,4 +13,4 @@ fun box() {
)
}
// LINES: 8 3 2 3 3 3 8 11 3 7 12 3 3 4
// LINES: 8 3 2 3 3 8 11 * 3 7 12 3 3 4
@@ -6,4 +6,4 @@ enum class Foo {
}
}
// LINES: 1 1 1 1 2 4 * 2 2 4 5 * 4 4 4 4 * 1 * 1 1 1 1
// LINES: 1 1 1 1 2 4 * 2 2 4 5 * 4 4 4 4 * 1 * 1 1 1
+1 -1
View File
@@ -10,4 +10,4 @@ enum class E {
}
}
// 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
// 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 -1
View File
@@ -21,4 +21,4 @@ fun bar(x: Int) {
println("%")
}
// LINES: 2 3 4 7 9 10 11 14 16 * 20 * 2 3 4 3 7 9 10 11 10 14 16 20 21
// LINES: 2 3 4 7 9 10 11 14 16 * 20 * 2 3 4 3 7 9 10 11 10 14 16 * 20 21
@@ -8,4 +8,4 @@ enum class E {
}
}
// LINES: 1 1 1 1 2 3 4 * 2 2 * 3 3 4 4 6 * 4 4 * 1 * 1 1 1 1 1 1
// LINES: 1 1 1 1 2 3 4 * 2 2 * 3 3 4 4 6 * 4 4 * 1 * 1 1 1 1 1
@@ -12,4 +12,4 @@ fun box() {
}
}
// LINES: 5 2 3 5 8 3 4 9 3 11
// LINES: 5 2 3 5 8 * 3 4 9 3 11
+2 -2
View File
@@ -3,10 +3,10 @@
<head>
<script type="application/javascript" src="../../../dist/js/kotlin.js"></script>
<script type="application/javascript" src="../../../dist/classes/kotlin-test-js/kotlin-test.js"></script>
<script type="application/javascript" src="../../../js/js.translator/testData/out/codegen/box/arrays/primitiveArrays_v5.js"></script>
<script type="application/javascript" src="out/box/expression/try/tryCatchExpr_v5.js"></script>
<script type="application/javascript">
console.log(JS_TESTS.box());
console.log(JS_TESTS.foo.box());
</script>
</head>
<body>