avoid reducing setter argument (#3737)
This commit is contained in:
8
test/input/reduce/setter.js
Normal file
8
test/input/reduce/setter.js
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
console.log(function f(a) {
|
||||||
|
({
|
||||||
|
set p(v) {
|
||||||
|
f++;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
return f.length;
|
||||||
|
}());
|
||||||
19
test/input/reduce/setter.reduced.js
Normal file
19
test/input/reduce/setter.reduced.js
Normal file
@@ -0,0 +1,19 @@
|
|||||||
|
console.log(function f(a) {
|
||||||
|
({
|
||||||
|
set p(v) {
|
||||||
|
f++;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
return f.length;
|
||||||
|
}());
|
||||||
|
// output: 1
|
||||||
|
//
|
||||||
|
// minify: 0
|
||||||
|
//
|
||||||
|
// options: {
|
||||||
|
// "compress": {
|
||||||
|
// "keep_fargs": false,
|
||||||
|
// "unsafe": true
|
||||||
|
// },
|
||||||
|
// "mangle": false
|
||||||
|
// }
|
||||||
@@ -31,6 +31,19 @@ describe("test/reduce.js", function() {
|
|||||||
if (result.error) throw result.error;
|
if (result.error) throw result.error;
|
||||||
assert.strictEqual(result.code, read("test/input/reduce/label.reduced.js"));
|
assert.strictEqual(result.code, read("test/input/reduce/label.reduced.js"));
|
||||||
});
|
});
|
||||||
|
it("Should retain setter arguments", function() {
|
||||||
|
var result = reduce_test(read("test/input/reduce/setter.js"), {
|
||||||
|
compress: {
|
||||||
|
keep_fargs: false,
|
||||||
|
unsafe: true,
|
||||||
|
},
|
||||||
|
mangle: false,
|
||||||
|
}, {
|
||||||
|
verbose: false,
|
||||||
|
});
|
||||||
|
if (result.error) throw result.error;
|
||||||
|
assert.strictEqual(result.code, read("test/input/reduce/setter.reduced.js"));
|
||||||
|
});
|
||||||
it("Should handle test cases with --toplevel", function() {
|
it("Should handle test cases with --toplevel", function() {
|
||||||
var result = reduce_test([
|
var result = reduce_test([
|
||||||
"var Infinity = 42;",
|
"var Infinity = 42;",
|
||||||
|
|||||||
@@ -75,8 +75,8 @@ module.exports = function reduce_test(testcase, minify_options, reduce_options)
|
|||||||
if (node instanceof U.AST_LabelRef) return;
|
if (node instanceof U.AST_LabelRef) return;
|
||||||
if (!in_list && node instanceof U.AST_SymbolDeclaration) return;
|
if (!in_list && node instanceof U.AST_SymbolDeclaration) return;
|
||||||
if (node instanceof U.AST_Toplevel) return;
|
if (node instanceof U.AST_Toplevel) return;
|
||||||
|
|
||||||
var parent = tt.parent();
|
var parent = tt.parent();
|
||||||
|
if (node instanceof U.AST_SymbolFunarg && parent instanceof U.AST_Accessor) return;
|
||||||
|
|
||||||
// ensure that the _permute prop is a number.
|
// ensure that the _permute prop is a number.
|
||||||
// can not use `node.start._permute |= 0;` as it will erase fractional part.
|
// can not use `node.start._permute |= 0;` as it will erase fractional part.
|
||||||
|
|||||||
Reference in New Issue
Block a user