improve source-map generation (#3782)

- emit singleton segments to mark generated code from input
This commit is contained in:
Alex Lam S.L
2020-04-16 16:30:25 +01:00
committed by GitHub
parent 38c3bcf9a0
commit 46d142cbf6
7 changed files with 84 additions and 15 deletions

View File

@@ -1470,7 +1470,6 @@ function OutputStream(options) {
AST_Node,
// since the label symbol will mark it
AST_LabeledStatement,
AST_Toplevel,
], noop);
// XXX: I'm not exactly sure if we need it for all of these nodes,
@@ -1482,7 +1481,6 @@ function OutputStream(options) {
AST_Constant,
AST_Debugger,
AST_Definitions,
AST_Directive,
AST_Finally,
AST_Jump,
AST_Lambda,

View File

@@ -119,6 +119,7 @@ function SourceMap(options) {
if (content) sources_content[map.sources[i]] = content;
}
});
var prev_source;
var generated_line = 1;
var generated_column = 0;
var source_index = 0;
@@ -137,11 +138,14 @@ function SourceMap(options) {
if (orig_col >= col) indices = segments[i];
if (orig_col <= col) break;
}
if (!indices || indices.length < 4) return;
source = map.sources[indices[1]];
orig_line = indices[2];
orig_col = indices[3];
if (indices.length > 4) name = map.names[indices[4]];
if (!indices || indices.length < 4) {
source = null;
} else {
source = map.sources[indices[1]];
orig_line = indices[2];
orig_col = indices[3];
if (indices.length > 4) name = map.names[indices[4]];
}
}
add(source, gen_line, gen_col, orig_line, orig_col, name);
} : add,
@@ -164,6 +168,8 @@ function SourceMap(options) {
};
function add(source, gen_line, gen_col, orig_line, orig_col, name) {
if (prev_source == null && source == null) return;
prev_source = source;
if (generated_line < gen_line) {
generated_column = 0;
do {
@@ -174,6 +180,7 @@ function SourceMap(options) {
}
mappings += vlq_encode(gen_col - generated_column);
generated_column = gen_col;
if (source == null) return;
var src_idx = sources.index(source);
mappings += vlq_encode(src_idx - source_index);
source_index = src_idx;