From: Alex Lam S.L Date: Tue, 25 Aug 2020 02:10:56 +0000 (+0800) Subject: minor clean up (#4069) X-Git-Url: https://git.ndcode.org/public/gitweb.cgi?a=commitdiff_plain;h=1caf7c7bd2160a5f249066bf62292f3589ceebb1;p=UglifyJS.git minor clean up (#4069) --- diff --git a/lib/compress.js b/lib/compress.js index acc85021..4de587ae 100644 --- a/lib/compress.js +++ b/lib/compress.js @@ -7185,11 +7185,11 @@ merge(Compressor.prototype, { var parent = compressor.parent(); if (compressor.option("comparisons") && self.is_boolean(compressor)) { if (!(parent instanceof AST_Binary) || parent instanceof AST_Assign) { - var negated = make_node(AST_UnaryPrefix, self, { + var negated = best_of(compressor, self, make_node(AST_UnaryPrefix, self, { operator: "!", expression: self.negate(compressor, first_in_statement(compressor)) - }); - self = best_of(compressor, self, negated); + })); + if (negated !== self) return negated; } switch (self.operator) { case ">": reverse("<"); break; @@ -7659,7 +7659,7 @@ merge(Compressor.prototype, { } function is_indexFn(node) { - return node instanceof AST_Call + return node.TYPE == "Call" && node.expression instanceof AST_Dot && indexFns[node.expression.property]; } diff --git a/lib/output.js b/lib/output.js index 82610fb6..cf05e261 100644 --- a/lib/output.js +++ b/lib/output.js @@ -100,7 +100,7 @@ function OutputStream(options) { } } - var indentation = 0; + var indentation = options.indent_start; var current_col = 0; var current_line = 1; var current_pos = 0; @@ -191,10 +191,6 @@ function OutputStream(options) { return name; } - function make_indent(back) { - return repeat_string(" ", options.indent_start + indentation - back * options.indent_level); - } - /* -----[ beautification/minification ]----- */ var has_parens = false; @@ -345,9 +341,7 @@ function OutputStream(options) { }; var indent = options.beautify ? function(half) { - if (options.beautify) { - print(make_indent(half ? 0.5 : 0)); - } + print(repeat_string(" ", half ? indentation - (options.indent_level >> 1) : indentation)); } : noop; var with_indent = options.beautify ? function(col, cont) { @@ -575,9 +569,9 @@ function OutputStream(options) { get : get, toString : get, indent : indent, - indentation : function() { return indentation }, - current_width : function() { return current_col - indentation }, - should_break : function() { return options.width && this.current_width() >= options.width }, + should_break : readonly ? noop : function() { + return options.width && current_col - indentation >= options.width; + }, has_parens : function() { return has_parens }, newline : newline, print : print, diff --git a/lib/utils.js b/lib/utils.js index 8ae17304..2f5a4866 100644 --- a/lib/utils.js +++ b/lib/utils.js @@ -112,51 +112,29 @@ function return_this() { return this; } function return_null() { return null; } var List = (function() { - function List(a, f, backwards) { - var ret = [], top = [], i; - function doit() { + function List(a, f) { + var ret = []; + for (var i = 0; i < a.length; i++) { var val = f(a[i], i); - var is_last = val instanceof Last; - if (is_last) val = val.v; - if (val instanceof AtTop) { - val = val.v; - if (val instanceof Splice) { - top.push.apply(top, backwards ? val.v.slice().reverse() : val.v); - } else { - top.push(val); - } - } else if (val !== skip) { - if (val instanceof Splice) { - ret.push.apply(ret, backwards ? val.v.slice().reverse() : val.v); - } else { - ret.push(val); - } - } - return is_last; - } - if (Array.isArray(a)) { - if (backwards) { - for (i = a.length; --i >= 0;) if (doit()) break; - ret.reverse(); - top.reverse(); + if (val === skip) continue; + if (val instanceof Splice) { + ret.push.apply(ret, val.v); } else { - for (i = 0; i < a.length; ++i) if (doit()) break; + ret.push(val); } - } else { - for (i in a) if (HOP(a, i)) if (doit()) break; } - return top.concat(ret); + return ret; } List.is_op = function(val) { - return val === skip || val instanceof AtTop || val instanceof Last || val instanceof Splice; + return val === skip || val instanceof Splice; + }; + List.splice = function(val) { + return new Splice(val); }; - List.at_top = function(val) { return new AtTop(val); }; - List.splice = function(val) { return new Splice(val); }; - List.last = function(val) { return new Last(val); }; var skip = List.skip = {}; - function AtTop(val) { this.v = val; } - function Splice(val) { this.v = val; } - function Last(val) { this.v = val; } + function Splice(val) { + this.v = val; + } return List; })();