swc/ecmascript/minifier/tests/terser/compress/dead-code/throw_assignment/output.terser.js
강동윤 ef6a745599
feat(es/minifier): Implement more rules (#1735)
swc_ecma_minifier:
 - Implement `evaluate` partially.
 - Store 'expected output' from terser along with our result.

swc_ecma_transforms_base:
 - `fixer`: Don't wrap `+ (a % b)`.

swc_ecma_transforms_optimization:
 - `expr_simplifier`: Preserve this in calls.
2021-05-25 16:39:07 +09:00

74 lines
1.1 KiB
JavaScript

function f1() {
throw (a = x());
}
function f2(a) {
throw x();
}
function f3() {
throw x();
}
function f4() {
try {
throw (a = x());
} catch (b) {
console.log(a);
}
}
function f5(a) {
try {
throw (a = x());
} catch (b) {
console.log(a);
}
}
function f6() {
var a;
try {
throw (a = x());
} catch (b) {
console.log(a);
}
}
function f7() {
try {
throw (a = x());
} finally {
console.log(a);
}
}
function f8(a) {
try {
throw (a = x());
} finally {
console.log(a);
}
}
function f9() {
var a;
try {
throw (a = x());
} finally {
console.log(a);
}
}
function test(inc) {
var counter = 0;
x = function () {
counter += inc;
if (inc < 0) throw counter;
return counter;
};
[f1, f2, f3, f4, f5, f6, f7, f8, f9].forEach(function (f, i) {
a = null;
try {
f(10 * (1 + i));
} catch (x) {
console.log("caught " + x);
}
if (null !== a) console.log("a: " + a);
});
}
var x, a;
test(1);
test(-1);