Merge branch 'master' into harmony
This commit is contained in:
@@ -1954,15 +1954,11 @@ merge(Compressor.prototype, {
|
||||
if (!compressor.option("side_effects"))
|
||||
return self;
|
||||
if (!self.car.has_side_effects(compressor)) {
|
||||
// we shouldn't compress (1,eval)(something) to
|
||||
// eval(something) because that changes the meaning of
|
||||
// eval (becomes lexical instead of global).
|
||||
var p;
|
||||
if (!(self.cdr instanceof AST_SymbolRef
|
||||
&& self.cdr.name == "eval"
|
||||
&& self.cdr.undeclared()
|
||||
&& (p = compressor.parent()) instanceof AST_Call
|
||||
&& p.expression === self)) {
|
||||
// we shouldn't compress (1,func)(something) to
|
||||
// func(something) because that changes the meaning of
|
||||
// the func (becomes lexical instead of global).
|
||||
var p = compressor.parent();
|
||||
if (!(p instanceof AST_Call && p.expression === self)) {
|
||||
return self.cdr;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1274,7 +1274,7 @@ function parse($TEXT, options) {
|
||||
});
|
||||
};
|
||||
|
||||
var new_ = function() {
|
||||
var new_ = function(allow_calls) {
|
||||
var start = S.token;
|
||||
expect_token("operator", "new");
|
||||
var newexp = expr_atom(false), args;
|
||||
@@ -1289,7 +1289,7 @@ function parse($TEXT, options) {
|
||||
expression : newexp,
|
||||
args : args,
|
||||
end : prev()
|
||||
}), true);
|
||||
}), allow_calls);
|
||||
};
|
||||
|
||||
function as_atom_node() {
|
||||
@@ -1333,7 +1333,7 @@ function parse($TEXT, options) {
|
||||
|
||||
var expr_atom = function(allow_calls) {
|
||||
if (is("operator", "new")) {
|
||||
return new_();
|
||||
return new_(allow_calls);
|
||||
}
|
||||
var start = S.token;
|
||||
if (is("punc")) {
|
||||
|
||||
23
test/compress/issue-782.js
Normal file
23
test/compress/issue-782.js
Normal file
@@ -0,0 +1,23 @@
|
||||
remove_redundant_sequence_items: {
|
||||
options = { side_effects: true };
|
||||
input: {
|
||||
(0, 1, logThis)();
|
||||
(0, 1, _decorators.logThis)();
|
||||
}
|
||||
expect: {
|
||||
(0, logThis)();
|
||||
(0, _decorators.logThis)();
|
||||
}
|
||||
}
|
||||
|
||||
dont_remove_lexical_binding_sequence: {
|
||||
options = { side_effects: true };
|
||||
input: {
|
||||
(0, logThis)();
|
||||
(0, _decorators.logThis)();
|
||||
}
|
||||
expect: {
|
||||
(0, logThis)();
|
||||
(0, _decorators.logThis)();
|
||||
}
|
||||
}
|
||||
12
test/compress/new.js
Normal file
12
test/compress/new.js
Normal file
@@ -0,0 +1,12 @@
|
||||
new_statement: {
|
||||
input: {
|
||||
new x(1);
|
||||
new x(1)(2);
|
||||
new x(1)(2)(3);
|
||||
new new x(1);
|
||||
new new x(1)(2);
|
||||
new (new x(1))(2);
|
||||
(new new x(1))(2);
|
||||
}
|
||||
expect_exact: "new x(1);new x(1)(2);new x(1)(2)(3);new new x(1);new new x(1)(2);new new x(1)(2);(new new x(1))(2);"
|
||||
}
|
||||
@@ -131,7 +131,7 @@ exports.minify = function(files, options) {
|
||||
var stream = UglifyJS.OutputStream(output);
|
||||
toplevel.print(stream);
|
||||
|
||||
if(options.outSourceMap){
|
||||
if (options.outSourceMap && "string" === typeof options.outSourceMap) {
|
||||
stream += "\n//# sourceMappingURL=" + options.outSourceMap;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user