A RetroSearch Logo

Home - News ( United States | United Kingdom | Italy | Germany ) - Football scores

Search Query:

Showing content from https://github.com/fabiosantoscode/terser/commit/32def5ebf5c9157937dcf802ce71fb9d1d3bc189 below:

improve synergy between `collapse_vars` & `unused` (#2521) · terser/terser@32def5e · GitHub

@@ -800,14 +800,6 @@ merge(Compressor.prototype, {

800 800

|| compressor.option("unsafe") && global_names(this.name);

801 801

});

802 802 803 -

function drop_decl(def) {

804 -

def.eliminated++;

805 -

if (def.orig.length == def.eliminated) {

806 -

def.scope.functions.del(def.name);

807 -

def.scope.variables.del(def.name);

808 -

}

809 -

}

810 - 811 803

function is_identifier_atom(node) {

812 804

return node instanceof AST_Infinity

813 805

|| node instanceof AST_NaN

@@ -1138,7 +1130,6 @@ merge(Compressor.prototype, {

1138 1130

if (node === expr || node.body === expr) {

1139 1131

found = true;

1140 1132

if (node instanceof AST_VarDef) {

1141 -

drop_decl(node.name.definition());

1142 1133

node.value = null;

1143 1134

return node;

1144 1135

}

@@ -2484,7 +2475,7 @@ merge(Compressor.prototype, {

2484 2475

var def = node.name.definition();

2485 2476

if (!(def.id in in_use_ids)) {

2486 2477

compressor[node.name.unreferenced() ? "warn" : "info"]("Dropping unused function {name} [{file}:{line},{col}]", template(node.name));

2487 -

drop_decl(def);

2478 +

def.eliminated++;

2488 2479

return make_node(AST_EmptyStatement, node);

2489 2480

}

2490 2481

return node;

@@ -2503,10 +2494,17 @@ merge(Compressor.prototype, {

2503 2494

if (!drop_vars || sym.id in in_use_ids) {

2504 2495

if (def.name instanceof AST_SymbolVar) {

2505 2496

var var_defs = var_defs_by_id.get(sym.id);

2506 -

if (var_defs.length > 1 && !def.value) {

2497 +

if (var_defs.length > 1 && (!def.value || sym.orig.indexOf(def.name) > sym.eliminated)) {

2507 2498

compressor.warn("Dropping duplicated definition of variable {name} [{file}:{line},{col}]", template(def.name));

2499 +

if (def.value) {

2500 +

merge_sequence(side_effects, make_node(AST_Assign, def, {

2501 +

operator: "=",

2502 +

left: make_node(AST_SymbolRef, def.name, def.name),

2503 +

right: def.value

2504 +

}));

2505 +

}

2508 2506

remove(var_defs, def);

2509 -

drop_decl(sym);

2507 +

sym.eliminated++;

2510 2508

return;

2511 2509

}

2512 2510

}

@@ -2539,25 +2537,9 @@ merge(Compressor.prototype, {

2539 2537

} else {

2540 2538

compressor[def.name.unreferenced() ? "warn" : "info"]("Dropping unused variable {name} [{file}:{line},{col}]", template(def.name));

2541 2539

}

2542 -

drop_decl(sym);

2540 +

sym.eliminated++;

2543 2541

}

2544 2542

});

2545 -

if (head.length == 0 && tail.length == 1 && tail[0].name instanceof AST_SymbolVar) {

2546 -

var var_defs = var_defs_by_id.get(tail[0].name.definition().id);

2547 -

if (var_defs.length > 1) {

2548 -

var def = tail.pop();

2549 -

compressor.warn("Converting duplicated definition of variable {name} to assignment [{file}:{line},{col}]", template(def.name));

2550 -

remove(var_defs, def);

2551 -

side_effects.unshift(make_node(AST_Assign, def, {

2552 -

operator: "=",

2553 -

left: make_node(AST_SymbolRef, def.name, def.name),

2554 -

right: def.value

2555 -

}));

2556 -

def = def.name.definition();

2557 -

drop_decl(def);

2558 -

def.replaced--;

2559 -

}

2560 -

}

2561 2543

if (head.length > 0 || tail.length > 0) {

2562 2544

node.definitions = head.concat(tail);

2563 2545

body.push(node);

@@ -3385,7 +3367,9 @@ merge(Compressor.prototype, {

3385 3367

}));

3386 3368

if (reduce_vars) name.definition().fixed = false;

3387 3369

}

3388 -

drop_decl(def.name.definition());

3370 +

def = def.name.definition();

3371 +

def.eliminated++;

3372 +

def.replaced--;

3389 3373

return a;

3390 3374

}, []);

3391 3375

if (assignments.length == 0) return null;


RetroSearch is an open source project built by @garambo | Open a GitHub Issue

Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo

HTML: 3.2 | Encoding: UTF-8 | Version: 0.7.4