- defer declaration removal in `collapse_vars` - account for `AST_SymbolFunarg` in deduplication - private accounting for `collapse_vars` - avoid issues with identity reference due to deep cloning fixes #2437
98 lines
1.8 KiB
JavaScript
98 lines
1.8 KiB
JavaScript
this_binding_conditionals: {
|
|
options = {
|
|
conditionals: true,
|
|
evaluate : true
|
|
};
|
|
input: {
|
|
(1 && a)();
|
|
(0 || a)();
|
|
(0 || 1 && a)();
|
|
(1 ? a : 0)();
|
|
|
|
(1 && a.b)();
|
|
(0 || a.b)();
|
|
(0 || 1 && a.b)();
|
|
(1 ? a.b : 0)();
|
|
|
|
(1 && a[b])();
|
|
(0 || a[b])();
|
|
(0 || 1 && a[b])();
|
|
(1 ? a[b] : 0)();
|
|
|
|
(1 && eval)();
|
|
(0 || eval)();
|
|
(0 || 1 && eval)();
|
|
(1 ? eval : 0)();
|
|
}
|
|
expect: {
|
|
a();
|
|
a();
|
|
a();
|
|
a();
|
|
|
|
(0, a.b)();
|
|
(0, a.b)();
|
|
(0, a.b)();
|
|
(0, a.b)();
|
|
|
|
(0, a[b])();
|
|
(0, a[b])();
|
|
(0, a[b])();
|
|
(0, a[b])();
|
|
|
|
(0, eval)();
|
|
(0, eval)();
|
|
(0, eval)();
|
|
(0, eval)();
|
|
}
|
|
}
|
|
|
|
this_binding_collapse_vars: {
|
|
options = {
|
|
collapse_vars: true,
|
|
toplevel: true,
|
|
unused: true,
|
|
};
|
|
input: {
|
|
var c = a; c();
|
|
var d = a.b; d();
|
|
var e = eval; e();
|
|
}
|
|
expect: {
|
|
a();
|
|
(0, a.b)();
|
|
(0, eval)();
|
|
}
|
|
}
|
|
|
|
this_binding_side_effects: {
|
|
options = {
|
|
side_effects : true
|
|
};
|
|
input: {
|
|
(function (foo) {
|
|
(0, foo)();
|
|
(0, foo.bar)();
|
|
(0, eval)('console.log(foo);');
|
|
}());
|
|
(function (foo) {
|
|
var eval = console;
|
|
(0, foo)();
|
|
(0, foo.bar)();
|
|
(0, eval)('console.log(foo);');
|
|
}());
|
|
}
|
|
expect: {
|
|
(function (foo) {
|
|
foo();
|
|
(0, foo.bar)();
|
|
(0, eval)('console.log(foo);');
|
|
}());
|
|
(function (foo) {
|
|
var eval = console;
|
|
foo();
|
|
(0, foo.bar)();
|
|
(0, eval)('console.log(foo);');
|
|
}());
|
|
}
|
|
} |