@@ -10019,7 +10019,7 @@ Compressor.prototype.compress = function(node) {
|
|||||||
return make_sequence(self, convert_args(value)).optimize(compressor);
|
return make_sequence(self, convert_args(value)).optimize(compressor);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (is_func) {
|
if (is_func && !fn.contains_this()) {
|
||||||
var def, value, var_assigned = false;
|
var def, value, var_assigned = false;
|
||||||
if (can_inline
|
if (can_inline
|
||||||
&& !fn.uses_arguments
|
&& !fn.uses_arguments
|
||||||
@@ -10027,8 +10027,7 @@ Compressor.prototype.compress = function(node) {
|
|||||||
&& !(fn.name && fn instanceof AST_LambdaExpression)
|
&& !(fn.name && fn instanceof AST_LambdaExpression)
|
||||||
&& (exp === fn || !recursive_ref(compressor, def = exp.definition(), fn)
|
&& (exp === fn || !recursive_ref(compressor, def = exp.definition(), fn)
|
||||||
&& fn.is_constant_expression(find_scope(compressor)))
|
&& fn.is_constant_expression(find_scope(compressor)))
|
||||||
&& (value = can_flatten_body(stat))
|
&& (value = can_flatten_body(stat))) {
|
||||||
&& !fn.contains_this()) {
|
|
||||||
var replacing = exp === fn || def.single_use && def.references.length - def.replaced == 1;
|
var replacing = exp === fn || def.single_use && def.references.length - def.replaced == 1;
|
||||||
if (can_substitute_directly()) {
|
if (can_substitute_directly()) {
|
||||||
var args = self.args.slice();
|
var args = self.args.slice();
|
||||||
|
|||||||
@@ -2081,3 +2081,43 @@ issue_5256: {
|
|||||||
expect_stdout: "undefined"
|
expect_stdout: "undefined"
|
||||||
node_version: ">=8"
|
node_version: ">=8"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
issue_5314_1: {
|
||||||
|
options = {
|
||||||
|
side_effects: true,
|
||||||
|
}
|
||||||
|
input: {
|
||||||
|
A = this;
|
||||||
|
new function() {
|
||||||
|
(function(a = console.log(this === A ? "PASS" : "FAIL")) {})();
|
||||||
|
}();
|
||||||
|
}
|
||||||
|
expect: {
|
||||||
|
A = this;
|
||||||
|
(function() {
|
||||||
|
(function(a = console.log(this === A ? "PASS" : "FAIL")) {})();
|
||||||
|
})();
|
||||||
|
}
|
||||||
|
expect_stdout: "PASS"
|
||||||
|
node_version: ">=6"
|
||||||
|
}
|
||||||
|
|
||||||
|
issue_5314_2: {
|
||||||
|
options = {
|
||||||
|
side_effects: true,
|
||||||
|
}
|
||||||
|
input: {
|
||||||
|
A = this;
|
||||||
|
new function() {
|
||||||
|
((a = console.log(this === A ? "FAIL" : "PASS")) => {})();
|
||||||
|
}();
|
||||||
|
}
|
||||||
|
expect: {
|
||||||
|
A = this;
|
||||||
|
new function() {
|
||||||
|
console.log(this === A ? "FAIL" : "PASS");
|
||||||
|
}();
|
||||||
|
}
|
||||||
|
expect_stdout: "PASS"
|
||||||
|
node_version: ">=6"
|
||||||
|
}
|
||||||
|
|||||||
@@ -3426,3 +3426,51 @@ issue_5288: {
|
|||||||
expect_stdout: "PASS"
|
expect_stdout: "PASS"
|
||||||
node_version: ">=6"
|
node_version: ">=6"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
issue_5314_1: {
|
||||||
|
options = {
|
||||||
|
side_effects: true,
|
||||||
|
}
|
||||||
|
input: {
|
||||||
|
A = this;
|
||||||
|
new function() {
|
||||||
|
(function({
|
||||||
|
[console.log(this === A ? "PASS" : "FAIL")]: a,
|
||||||
|
}) {})(42);
|
||||||
|
}();
|
||||||
|
}
|
||||||
|
expect: {
|
||||||
|
A = this;
|
||||||
|
(function() {
|
||||||
|
(function({
|
||||||
|
[console.log(this === A ? "PASS" : "FAIL")]: a,
|
||||||
|
}) {})(42);
|
||||||
|
})();
|
||||||
|
}
|
||||||
|
expect_stdout: "PASS"
|
||||||
|
node_version: ">=6"
|
||||||
|
}
|
||||||
|
|
||||||
|
issue_5314_2: {
|
||||||
|
options = {
|
||||||
|
side_effects: true,
|
||||||
|
}
|
||||||
|
input: {
|
||||||
|
A = this;
|
||||||
|
new function() {
|
||||||
|
(({
|
||||||
|
[console.log(this === A ? "FAIL" : "PASS")]: a,
|
||||||
|
}) => {})(42);
|
||||||
|
}();
|
||||||
|
}
|
||||||
|
expect: {
|
||||||
|
A = this;
|
||||||
|
new function() {
|
||||||
|
[ {
|
||||||
|
[console.log(this === A ? "FAIL" : "PASS")]: [].e,
|
||||||
|
} ] = [ 42 ];
|
||||||
|
}();
|
||||||
|
}
|
||||||
|
expect_stdout: "PASS"
|
||||||
|
node_version: ">=6"
|
||||||
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user