diff options
author | Alex Lam S.L <alexlamsl@gmail.com> | 2021-07-17 13:20:56 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-07-17 20:20:56 +0800 |
commit | ef5f7fc25e93833396540cf7479685b241bd1b8f (patch) | |
tree | 22233bb2d8587a43e9bb34633dcdd89fdc88da2a | |
parent | 902997b73dd0a6f3a8ada67f5e8bbfed000f5282 (diff) | |
download | tracifyjs-ef5f7fc25e93833396540cf7479685b241bd1b8f.tar.gz tracifyjs-ef5f7fc25e93833396540cf7479685b241bd1b8f.zip |
workaround various IE quirks (#5084)
fixes #5081
33 files changed, 477 insertions, 311 deletions
diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 9dc292c3..f4e9f9dd 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -10,7 +10,7 @@ jobs: matrix: options: - '-mb braces' - - '--ie8 -c' + - '--ie -c' - '-mc' - '-p acorn --toplevel -mco spidermonkey' - '--toplevel -mc passes=3,pure_getters,unsafe' @@ -111,8 +111,8 @@ a double dash to prevent input files being used as option arguments: -d, --define <expr>[=value] Global definitions. -e, --enclose [arg[:value]] Embed everything in a big function, with configurable argument(s) & value(s). - --ie8 Support non-standard Internet Explorer 8. - Equivalent to setting `ie8: true` in `minify()` + --ie Support non-standard Internet Explorer. + Equivalent to setting `ie: true` in `minify()` for `compress`, `mangle` and `output` options. By default UglifyJS will not try to be IE-proof. --keep-fnames Do not mangle/drop function names. Useful for @@ -502,7 +502,7 @@ if (result.error) throw result.error; - `compress` (default: `{}`) — pass `false` to skip compressing entirely. Pass an object to specify custom [compress options](#compress-options). -- `ie8` (default: `false`) — set to `true` to support IE8. +- `ie` (default: `false`) — enable workarounds for Internet Explorer bugs. - `keep_fnames` (default: `false`) — pass `true` to prevent discarding or mangling of function names. Useful for code relying on `Function.prototype.name`. @@ -566,7 +566,6 @@ if (result.error) throw result.error; }, nameCache: null, // or specify a name cache object toplevel: false, - ie8: false, warnings: false, } ``` @@ -795,9 +794,8 @@ to be `false` and all symbol names will be omitted. variables (`"vars"`) in the top level scope (`false` by default, `true` to drop both unreferenced functions and variables) -- `typeofs` (default: `true`) — Transforms `typeof foo == "undefined"` into - `foo === void 0`. Note: recommend to set this value to `false` for IE10 and - earlier versions due to known issues. +- `typeofs` (default: `true`) — compress `typeof` expressions, e.g. + `typeof foo == "undefined" → void 0 === foo` - `unsafe` (default: `false`) — apply "unsafe" transformations (discussion below) diff --git a/bin/uglifyjs b/bin/uglifyjs index 197e42bf..08e3d495 100755 --- a/bin/uglifyjs +++ b/bin/uglifyjs @@ -101,7 +101,7 @@ function process_option(name, no_value) { " --config-file <file> Read minify() options from JSON file.", " -d, --define <expr>[=value] Global definitions.", " -e, --enclose [arg[,...][:value[,...]]] Embed everything in a big function, with configurable argument(s) & value(s).", - " --ie8 Support non-standard Internet Explorer 8.", + " --ie Support non-standard Internet Explorer.", " --keep-fnames Do not mangle/drop function names. Useful for code relying on Function.prototype.name.", " --name-cache <file> File to hold mangled name mappings.", " --rename Force symbol expansion.", @@ -110,6 +110,7 @@ function process_option(name, no_value) { " --source-map [options] Enable source map/specify source map options.", " --timings Display operations run time on STDERR.", " --toplevel Compress and/or mangle variables in toplevel scope.", + " --v8 Support non-standard Chrome & Node.js.", " --validate Perform validation during AST manipulations.", " --verbose Print diagnostic messages.", " --warn Print warning messages.", @@ -145,9 +146,11 @@ function process_option(name, no_value) { options[name] = read_value(); break; case "annotations": + case "ie": case "ie8": case "timings": case "toplevel": + case "v8": case "validate": case "webkit": options[name] = true; diff --git a/lib/compress.js b/lib/compress.js index fa684339..27fcacb0 100644 --- a/lib/compress.js +++ b/lib/compress.js @@ -70,7 +70,7 @@ function Compressor(options, false_by_default) { hoist_funs : false, hoist_props : !false_by_default, hoist_vars : false, - ie8 : false, + ie : false, if_return : !false_by_default, imports : !false_by_default, inline : !false_by_default, @@ -206,7 +206,7 @@ merge(Compressor.prototype, { var passes = +this.options.passes || 1; var min_count = 1 / 0; var stopping = false; - var mangle = { ie8: this.option("ie8") }; + var mangle = { ie: this.option("ie") }; for (var pass = 0; pass < passes; pass++) { node.figure_out_scope(mangle); if (pass > 0 || this.option("reduce_vars")) @@ -513,7 +513,7 @@ merge(Compressor.prototype, { if (scope.uses_arguments) scope.each_argname(function(node) { node.definition().last_ref = false; }); - if (compressor.option("ie8")) scope.variables.each(function(def) { + if (compressor.option("ie")) scope.variables.each(function(def) { var d = def.orig[0].definition(); if (d !== def) d.fixed = false; }); @@ -2249,7 +2249,7 @@ merge(Compressor.prototype, { return side_effects || lhs instanceof AST_PropAccess || may_modify(lhs); } if (node instanceof AST_Function) { - return compressor.option("ie8") && node.name && lvalues.has(node.name.name); + return compressor.option("ie") && node.name && lvalues.has(node.name.name); } if (node instanceof AST_ObjectIdentity) return symbol_in_lvalues(node, parent); if (node instanceof AST_PropAccess) { @@ -4208,7 +4208,7 @@ merge(Compressor.prototype, { AST_Toplevel.DEFMETHOD("resolve_defines", function(compressor) { if (!compressor.option("global_defs")) return this; - this.figure_out_scope({ ie8: compressor.option("ie8") }); + this.figure_out_scope({ ie: compressor.option("ie") }); return this.transform(new TreeTransformer(function(node) { var def = node._find_defs(compressor, ""); if (!def) return; @@ -5672,7 +5672,7 @@ merge(Compressor.prototype, { if (node instanceof AST_Call) { var exp = node.expression; var tail = exp.tail_node(); - if (!(tail instanceof AST_LambdaExpression)) return; + if (!(tail instanceof AST_LambdaExpression)) return walk_node_with_expr(node); if (exp !== tail) exp.expressions.slice(0, -1).forEach(function(node) { node.walk(tw); }); @@ -5788,6 +5788,7 @@ merge(Compressor.prototype, { pop(); return true; } + if (node instanceof AST_Sub) return walk_node_with_expr(node); if (node instanceof AST_Switch) { node.expression.walk(tw); var save = segment; @@ -5886,6 +5887,15 @@ merge(Compressor.prototype, { pop(); return true; } + + function walk_node_with_expr(node) { + descend(); + if (compressor.option("ie")) { + var sym = root_expr(node.expression); + if (sym instanceof AST_SymbolRef) sym.walk(tw); + } + return true; + } }); tw.directives = Object.create(compressor.directives); self.walk(tw); @@ -6235,7 +6245,7 @@ merge(Compressor.prototype, { }); tw.directives = Object.create(compressor.directives); self.walk(tw); - var drop_fn_name = compressor.option("keep_fnames") ? return_false : compressor.option("ie8") ? function(def) { + var drop_fn_name = compressor.option("keep_fnames") ? return_false : compressor.option("ie") ? function(def) { return !compressor.exposed(def) && def.references.length == def.replaced; } : function(def) { if (!(def.id in in_use_ids)) return true; @@ -6247,7 +6257,7 @@ merge(Compressor.prototype, { return !ref.in_arg; }); }; - if (compressor.option("ie8")) initializations.each(function(init, id) { + if (compressor.option("ie")) initializations.each(function(init, id) { if (id in in_use_ids) return; init.forEach(function(init) { init.walk(new TreeWalker(function(node) { @@ -6535,7 +6545,7 @@ merge(Compressor.prototype, { head.push(def); } } else if (compressor.option("functions") - && !compressor.option("ie8") + && !compressor.option("ie") && drop_sym && var_defs[sym.id] == 1 && sym.assignments == 0 @@ -7652,7 +7662,7 @@ merge(Compressor.prototype, { }); function fn_name_unused(fn, compressor) { - if (!fn.name || !compressor.option("ie8")) return true; + if (!fn.name || !compressor.option("ie")) return true; var def = fn.name.definition(); if (compressor.exposed(def)) return false; return all(def.references, function(sym) { @@ -7969,7 +7979,7 @@ merge(Compressor.prototype, { var alternative = this.alternative.drop_side_effect_free(compressor); if (consequent === this.consequent && alternative === this.alternative) return this; var exprs; - if (compressor.option("ie8")) { + if (compressor.option("ie")) { exprs = []; if (consequent instanceof AST_Function) { exprs.push(consequent); @@ -7998,7 +8008,7 @@ merge(Compressor.prototype, { node.consequent = consequent; node.alternative = alternative; } - if (!compressor.option("ie8")) return node; + if (!compressor.option("ie")) return node; if (node) exprs.push(node); return exprs.length == 0 ? null : make_sequence(this, exprs); }); @@ -9411,7 +9421,7 @@ merge(Compressor.prototype, { return arg.value; }).join() + "){" + self.args[self.args.length - 1].value + "})"; var ast = parse(code); - var mangle = { ie8: compressor.option("ie8") }; + var mangle = { ie: compressor.option("ie") }; ast.figure_out_scope(mangle); var comp = new Compressor(compressor.options); ast = ast.transform(comp); @@ -10465,7 +10475,7 @@ merge(Compressor.prototype, { && self.right.operator == "typeof") { var expr = self.right.expression; if (expr instanceof AST_SymbolRef ? expr.is_declared(compressor) - : !(expr instanceof AST_PropAccess && compressor.option("ie8"))) { + : !(expr instanceof AST_PropAccess && compressor.option("ie"))) { self.right = expr; self.left = make_node(AST_Undefined, self.left).optimize(compressor); if (self.operator.length == 2) self.operator += "="; @@ -11079,7 +11089,7 @@ merge(Compressor.prototype, { } OPT(AST_SymbolRef, function(self, compressor) { - if (!compressor.option("ie8") + if (!compressor.option("ie") && is_undeclared_ref(self) // testing against `self.scope.uses_with` is an optimization && !(self.scope.resolve().uses_with && compressor.find_parent(AST_With))) { @@ -11121,7 +11131,7 @@ merge(Compressor.prototype, { single_use = false; } else if (fixed.has_side_effects(compressor)) { single_use = false; - } else if (compressor.option("ie8") && fixed instanceof AST_Class) { + } else if (compressor.option("ie") && fixed instanceof AST_Class) { single_use = false; } if (single_use) fixed.parent_scope = self.scope; diff --git a/lib/minify.js b/lib/minify.js index e85adb1f..d3394b42 100644 --- a/lib/minify.js +++ b/lib/minify.js @@ -76,6 +76,7 @@ function minify(files, options) { annotations: undefined, compress: {}, enclose: false, + ie: false, ie8: false, keep_fnames: false, mangle: {}, @@ -96,7 +97,7 @@ function minify(files, options) { var timings = options.timings && { start: Date.now() }; if (options.rename === undefined) options.rename = options.compress && options.mangle; if (options.annotations !== undefined) set_shorthand("annotations", options, [ "compress", "output" ]); - if (options.ie8) set_shorthand("ie8", options, [ "compress", "mangle", "output" ]); + if (options.ie || options.ie8) set_shorthand("ie", options, [ "compress", "mangle", "output" ]); if (options.keep_fnames) set_shorthand("keep_fnames", options, [ "compress", "mangle" ]); if (options.toplevel) set_shorthand("toplevel", options, [ "compress", "mangle" ]); if (options.v8) set_shorthand("v8", options, [ "mangle", "output" ]); @@ -106,7 +107,7 @@ function minify(files, options) { options.mangle = defaults(options.mangle, { cache: options.nameCache && (options.nameCache.vars || {}), eval: false, - ie8: false, + ie: false, keep_fnames: false, properties: false, reserved: [], diff --git a/lib/output.js b/lib/output.js index c57ff2ed..afc89055 100644 --- a/lib/output.js +++ b/lib/output.js @@ -56,7 +56,7 @@ function OutputStream(options) { braces : false, comments : false, galio : false, - ie8 : false, + ie : false, indent_level : 4, indent_start : 0, inline_script : true, @@ -193,7 +193,7 @@ function OutputStream(options) { case "\t": return "\\t"; case "\b": return "\\b"; case "\f": return "\\f"; - case "\x0B": return options.ie8 ? "\\x0B" : "\\v"; + case "\x0B": return options.ie ? "\\x0B" : "\\v"; case "\u2028": return "\\u2028"; case "\u2029": return "\\u2029"; case "\ufeff": return "\\ufeff"; @@ -1290,7 +1290,7 @@ function OutputStream(options) { function make_then(self, output) { var b = self.body; if (output.option("braces") && !(b instanceof AST_Const || b instanceof AST_Let) - || output.option("ie8") && b instanceof AST_Do) + || output.option("ie") && b instanceof AST_Do) return make_block(b, output); // The squeezer replaces "block"-s that contain only a single // statement with the statement itself; technically, the AST @@ -1515,7 +1515,7 @@ function OutputStream(options) { var expr = self.expression; expr.print(output); var prop = self.property; - if (output.option("ie8") && RESERVED_WORDS[prop]) { + if (output.option("ie") && RESERVED_WORDS[prop]) { output.print(self.optional ? "?.[" : "["); output.add_mapping(self.end); output.print_string(prop); @@ -1702,7 +1702,7 @@ function OutputStream(options) { var quote = self.start && self.start.quote; if (self.private) { output.print_name(key); - } else if (RESERVED_WORDS[key] ? !output.option("ie8") : is_identifier_string(key)) { + } else if (RESERVED_WORDS[key] ? !output.option("ie") : is_identifier_string(key)) { if (quote && output.option("keep_quoted_props")) { output.print_string(key, quote); } else { diff --git a/lib/scope.js b/lib/scope.js index 3de59b99..2219b89a 100644 --- a/lib/scope.js +++ b/lib/scope.js @@ -118,7 +118,7 @@ function is_lhs(node, parent) { AST_Toplevel.DEFMETHOD("figure_out_scope", function(options) { options = defaults(options, { cache: null, - ie8: false, + ie: false, }); // pass 1: setup scope chaining and handle definitions @@ -211,7 +211,7 @@ AST_Toplevel.DEFMETHOD("figure_out_scope", function(options) { entangle(defun, scope); } else if (node instanceof AST_SymbolLambda) { var def = defun.def_function(node, node.name == "arguments" ? undefined : defun); - if (options.ie8) def.defun = defun.parent_scope.resolve(); + if (options.ie) def.defun = defun.parent_scope.resolve(); } else if (node instanceof AST_SymbolLet) { var def = scope.def_variable(node); if (exported) def.exported = true; @@ -351,7 +351,7 @@ AST_Toplevel.DEFMETHOD("figure_out_scope", function(options) { self.walk(tw); // pass 3: fix up any scoping issue with IE8 - if (options.ie8) self.walk(new TreeWalker(function(node) { + if (options.ie) self.walk(new TreeWalker(function(node) { if (node instanceof AST_SymbolCatch) { var scope = node.thedef.defun; if (scope.name instanceof AST_SymbolLambda && scope.name.name == node.name) { @@ -572,7 +572,7 @@ AST_Symbol.DEFMETHOD("definition", function() { function _default_mangler_options(options) { options = defaults(options, { eval : false, - ie8 : false, + ie : false, keep_fnames : false, reserved : [], toplevel : false, diff --git a/test/compress/classes.js b/test/compress/classes.js index f604810a..5ed30024 100644 --- a/test/compress/classes.js +++ b/test/compress/classes.js @@ -1157,7 +1157,7 @@ issue_4705: { issue_4720: { options = { - ie8: true, + ie: true, reduce_vars: true, toplevel: true, unused: true, @@ -1629,7 +1629,7 @@ issue_4951_2: { issue_4962_1: { options = { - ie8: true, + ie: true, inline: true, reduce_vars: true, unused: true, @@ -1656,7 +1656,7 @@ issue_4962_1: { issue_4962_2: { options = { - ie8: true, + ie: true, inline: true, reduce_vars: true, unused: true, diff --git a/test/compress/collapse_vars.js b/test/compress/collapse_vars.js index e2d567b4..4e133768 100644 --- a/test/compress/collapse_vars.js +++ b/test/compress/collapse_vars.js @@ -6008,7 +6008,7 @@ issue_3215_1: { options = { collapse_vars: true, evaluate: true, - ie8: false, + ie: false, inline: true, passes: 2, side_effects: true, @@ -6030,7 +6030,7 @@ issue_3215_2: { options = { collapse_vars: true, evaluate: true, - ie8: true, + ie: true, inline: true, passes: 2, side_effects: true, @@ -6055,7 +6055,7 @@ issue_3215_3: { options = { collapse_vars: true, evaluate: true, - ie8: false, + ie: false, inline: true, passes: 2, side_effects: true, @@ -6078,7 +6078,7 @@ issue_3215_4: { options = { collapse_vars: true, evaluate: true, - ie8: true, + ie: true, inline: true, passes: 2, side_effects: true, diff --git a/test/compress/const.js b/test/compress/const.js index 6a064b41..521a14d8 100644 --- a/test/compress/const.js +++ b/test/compress/const.js @@ -486,7 +486,7 @@ do_continue: { catch_ie8_1: { options = { - ie8: true, + ie: true, unused: true, } input: { @@ -506,7 +506,7 @@ catch_ie8_1: { catch_ie8_2: { options = { dead_code: true, - ie8: true, + ie: true, passes: 2, toplevel: true, unused: true, @@ -727,7 +727,7 @@ issue_4193: { issue_4195: { mangle = { - ie8: true, + ie: true, } input: { console.log(function f(a) { @@ -1131,7 +1131,7 @@ issue_4225: { issue_4229: { options = { - ie8: true, + ie: true, side_effects: true, } input: { @@ -1151,7 +1151,7 @@ issue_4229: { issue_4231: { options = { - ie8: true, + ie: true, side_effects: true, } input: { diff --git a/test/compress/default-values.js b/test/compress/default-values.js index bf90e78e..28cc46f0 100644 --- a/test/compress/default-values.js +++ b/test/compress/default-values.js @@ -1709,7 +1709,7 @@ issue_4588_2_evaluate: { issue_4817: { options = { - ie8: true, + ie: true, inline: true, unused: true, } diff --git a/test/compress/destructured.js b/test/compress/destructured.js index 54ee1ac8..06fb57cd 100644 --- a/test/compress/destructured.js +++ b/test/compress/destructured.js @@ -2029,7 +2029,7 @@ issue_4321: { issue_4323: { options = { - ie8: true, + ie: true, inline: true, merge_vars: true, reduce_vars: true, diff --git a/test/compress/drop-unused.js b/test/compress/drop-unused.js index cb2cb33a..3d2a4f44 100644 --- a/test/compress/drop-unused.js +++ b/test/compress/drop-unused.js @@ -2345,7 +2345,7 @@ function_argument_reference: { function_parameter_ie8: { options = { - ie8: true, + ie: true, reduce_vars: true, unused: true, } @@ -3230,7 +3230,7 @@ issue_4558_1: { issue_4558_2: { options = { evaluate: true, - ie8: true, + ie: true, reduce_vars: true, unused: true, } diff --git a/test/compress/functions.js b/test/compress/functions.js index a4a876fa..257ff7a2 100644 --- a/test/compress/functions.js +++ b/test/compress/functions.js @@ -2123,7 +2123,7 @@ issue_3016_2: { issue_3016_2_ie8: { options = { dead_code: true, - ie8: true, + ie: true, inline: true, toplevel: true, } @@ -2188,7 +2188,7 @@ issue_3016_3: { issue_3016_3_ie8: { options = { dead_code: true, - ie8: true, + ie: true, inline: true, toplevel: true, } diff --git a/test/compress/ie8.js b/test/compress/ie.js index 018cd2d8..c275c88b 100644 --- a/test/compress/ie8.js +++ b/test/compress/ie.js @@ -1,9 +1,9 @@ do_screw: { options = { - ie8: false, + ie: false, } beautify = { - ie8: false, + ie: false, ascii_only: true, } input: { @@ -14,10 +14,10 @@ do_screw: { dont_screw: { options = { - ie8: true, + ie: true, } beautify = { - ie8: true, + ie: true, ascii_only: true, } input: { @@ -28,7 +28,7 @@ dont_screw: { do_screw_constants: { options = { - ie8: false, + ie: false, } input: { f(undefined, Infinity); @@ -38,7 +38,7 @@ do_screw_constants: { dont_screw_constants: { options = { - ie8: true, + ie: true, } input: { f(undefined, Infinity); @@ -48,13 +48,13 @@ dont_screw_constants: { do_screw_try_catch: { options = { - ie8: false, + ie: false, } mangle = { - ie8: false, + ie: false, } beautify = { - ie8: false, + ie: false, } input: { good = function(e){ @@ -82,13 +82,13 @@ do_screw_try_catch: { dont_screw_try_catch: { options = { - ie8: true, + ie: true, } mangle = { - ie8: true, + ie: true, } beautify = { - ie8: true, + ie: true, } input: { bad = function(e){ @@ -116,13 +116,13 @@ dont_screw_try_catch: { do_screw_try_catch_undefined: { options = { - ie8: false, + ie: false, } mangle = { - ie8: false, + ie: false, } beautify = { - ie8: false, + ie: false, } input: { function a(b) { @@ -159,13 +159,13 @@ do_screw_try_catch_undefined: { dont_screw_try_catch_undefined: { options = { - ie8: true, + ie: true, } mangle = { - ie8: true, + ie: true, } beautify = { - ie8: true, + ie: true, } input: { function a(b) { @@ -204,13 +204,13 @@ dont_screw_try_catch_undefined: { reduce_vars: { options = { evaluate: true, - ie8: true, + ie: true, reduce_funcs: true, reduce_vars: true, unused: true, } mangle = { - ie8: true, + ie: true, } input: { function f() { @@ -236,12 +236,87 @@ reduce_vars: { } } +typeof_getAttribute: { + options = { + comparisons: true, + ie: false, + typeofs: true, + } + input: { + document = { + createElement: function() { + return { + getAttribute: function() {}, + }; + }, + write: console.log, + }; + document.write(function(element) { + if (element) + return "undefined" === typeof element.getAttribute; + }(document.createElement("foo")) ? "FAIL" : "PASS"); + } + expect: { + document = { + createElement: function() { + return { + getAttribute: function() {}, + }; + }, + write: console.log, + }; + document.write(function(element) { + if (element) + // IE6~10: Access is denied. + return void 0 === element.getAttribute; + }(document.createElement("foo")) ? "FAIL" : "PASS"); + } + expect_stdout: "PASS" +} + +typeof_getAttribute_ie6: { + options = { + comparisons: true, + ie: true, + typeofs: true, + } + input: { + document = { + createElement: function() { + return { + getAttribute: function() {}, + }; + }, + write: console.log, + }; + document.write(function(element) { + if (element) + return "undefined" === typeof element.getAttribute; + }(document.createElement("foo")) ? "FAIL" : "PASS"); + } + expect: { + document = { + createElement: function() { + return { + getAttribute: function() {}, + }; + }, + write: console.log, + }; + document.write(function(element) { + if (element) + return "undefined" == typeof element.getAttribute; + }(document.createElement("foo")) ? "FAIL" : "PASS"); + } + expect_stdout: "PASS" +} + issue_1586_1: { options = { - ie8: true, + ie: true, } mangle = { - ie8: true, + ie: true, } input: { function f() { @@ -257,10 +332,10 @@ issue_1586_1: { issue_1586_2: { options = { - ie8: false, + ie: false, } mangle = { - ie8: false, + ie: false, } input: { function f() { @@ -276,7 +351,7 @@ issue_1586_2: { issue_2120_1: { mangle = { - ie8: false, + ie: false, } input: { "aaaaaaaa"; @@ -311,7 +386,7 @@ issue_2120_1: { issue_2120_2: { mangle = { - ie8: true, + ie: true, } input: { "aaaaaaaa"; @@ -346,7 +421,7 @@ issue_2120_2: { issue_2254_1: { mangle = { - ie8: false, + ie: false, } input: { "eeeeee"; @@ -379,7 +454,7 @@ issue_2254_1: { issue_2254_2: { mangle = { - ie8: true, + ie: true, } input: { "eeeeee"; @@ -412,7 +487,7 @@ issue_2254_2: { issue_24_1: { mangle = { - ie8: false, + ie: false, } input: { (function(a) { @@ -429,7 +504,7 @@ issue_24_1: { issue_24_2: { mangle = { - ie8: true, + ie: true, } input: { (function(a) { @@ -446,7 +521,7 @@ issue_24_2: { issue_2976_1: { mangle = { - ie8: false, + ie: false, } input: { console.log(function f() { @@ -465,7 +540,7 @@ issue_2976_1: { issue_2976_2: { mangle = { - ie8: true, + ie: true, } input: { console.log(function f() { @@ -484,7 +559,7 @@ issue_2976_2: { issue_2976_3: { mangle = { - ie8: true, + ie: true, toplevel: true, } input: { @@ -504,7 +579,7 @@ issue_2976_3: { issue_3035: { mangle = { - ie8: false, + ie: false, } input: { var c = "FAIL"; @@ -541,7 +616,7 @@ issue_3035: { issue_3035_ie8: { mangle = { - ie8: true, + ie: true, } input: { var c = "FAIL"; @@ -578,14 +653,14 @@ issue_3035_ie8: { issue_3197_1: { options = { - ie8: false, + ie: false, inline: true, reduce_vars: true, side_effects: true, unused: true, } mangle = { - ie8: false, + ie: false, } input: { !function() { @@ -607,14 +682,14 @@ issue_3197_1: { issue_3197_1_ie8: { options = { - ie8: true, + ie: true, inline: true, reduce_vars: true, side_effects: true, unused: true, } mangle = { - ie8: true, + ie: true, } input: { !function() { @@ -636,7 +711,7 @@ issue_3197_1_ie8: { issue_3197_2: { mangle = { - ie8: false, + ie: false, } input: { (function(a) { @@ -659,7 +734,7 @@ issue_3197_2: { issue_3197_2_ie8: { mangle = { - ie8: true, + ie: true, } input: { (function(a) { @@ -683,7 +758,7 @@ issue_3197_2_ie8: { issue_3206_1: { options = { evaluate: true, - ie8: false, + ie: false, reduce_vars: true, typeofs: true, unused: true, @@ -706,7 +781,7 @@ issue_3206_1: { issue_3206_2: { options = { evaluate: true, - ie8: true, + ie: true, reduce_vars: true, typeofs: true, unused: true, @@ -729,7 +804,7 @@ issue_3206_2: { issue_3215_1: { mangle = { - ie8: false, + ie: false, } input: { console.log(function foo() { @@ -766,7 +841,7 @@ issue_3215_1: { issue_3215_2: { mangle = { - ie8: true, + ie: true, } input: { console.log(function foo() { @@ -803,7 +878,7 @@ issue_3215_2: { issue_3215_3: { mangle = { - ie8: false, + ie: false, } input: { console.log(function foo() { @@ -840,7 +915,7 @@ issue_3215_3: { issue_3215_4: { mangle = { - ie8: true, + ie: true, } input: { console.log(function foo() { @@ -877,7 +952,7 @@ issue_3215_4: { issue_3355_1: { mangle = { - ie8: false, + ie: false, } input: { (function f() { @@ -900,7 +975,7 @@ issue_3355_1: { issue_3355_2: { mangle = { - ie8: true, + ie: true, } input: { (function f() { @@ -923,7 +998,7 @@ issue_3355_2: { issue_3355_3: { mangle = { - ie8: false, + ie: false, } input: { !function(a) { @@ -954,7 +1029,7 @@ issue_3355_3: { issue_3355_4: { mangle = { - ie8: true, + ie: true, } input: { !function(a) { @@ -986,7 +1061,7 @@ issue_3355_4: { issue_3468: { options = { collapse_vars: true, - ie8: false, + ie: false, } input: { var a = 42; @@ -1008,7 +1083,7 @@ issue_3468: { issue_3468_ie8: { options = { collapse_vars: true, - ie8: true, + ie: true, } input: { var a = 42; @@ -1029,7 +1104,7 @@ issue_3468_ie8: { issue_3471: { options = { - ie8: false, + ie: false, functions: true, reduce_vars: true, toplevel: true, @@ -1063,7 +1138,7 @@ issue_3471: { issue_3471_ie8: { options = { - ie8: true, + ie: true, functions: true, reduce_vars: true, toplevel: true, @@ -1098,7 +1173,7 @@ issue_3471_ie8: { issue_3473: { rename = true mangle = { - ie8: false, + ie: false, toplevel: false, } input: { @@ -1125,7 +1200,7 @@ issue_3473: { issue_3473_ie8: { rename = true mangle = { - ie8: true, + ie: true, toplevel: false, } input: { @@ -1152,7 +1227,7 @@ issue_3473_ie8: { issue_3473_toplevel: { rename = true mangle = { - ie8: false, + ie: false, toplevel: true, } input: { @@ -1179,7 +1254,7 @@ issue_3473_toplevel: { issue_3473_ie8_toplevel: { rename = true mangle = { - ie8: true, + ie: true, toplevel: true, } input: { @@ -1206,7 +1281,7 @@ issue_3473_ie8_toplevel: { issue_3475: { rename = true mangle = { - ie8: false, + ie: false, toplevel: false, } input: { @@ -1239,7 +1314,7 @@ issue_3475: { issue_3475_ie8: { rename = true mangle = { - ie8: true, + ie: true, toplevel: false, } input: { @@ -1272,7 +1347,7 @@ issue_3475_ie8: { issue_3475_toplevel: { rename = true mangle = { - ie8: false, + ie: false, toplevel: true, } input: { @@ -1305,7 +1380,7 @@ issue_3475_toplevel: { issue_3475_ie8_toplevel: { rename = true mangle = { - ie8: true, + ie: true, toplevel: true, } input: { @@ -1338,7 +1413,7 @@ issue_3475_ie8_toplevel: { issue_3478_1: { rename = true mangle = { - ie8: false, + ie: false, toplevel: false, } input: { @@ -1365,7 +1440,7 @@ issue_3478_1: { issue_3478_1_ie8: { rename = true mangle = { - ie8: true, + ie: true, toplevel: false, } input: { @@ -1392,7 +1467,7 @@ issue_3478_1_ie8: { issue_3478_1_toplevel: { rename = true mangle = { - ie8: false, + ie: false, toplevel: true, } input: { @@ -1419,7 +1494,7 @@ issue_3478_1_toplevel: { issue_3478_1_ie8_toplevel: { rename = true mangle = { - ie8: true, + ie: true, toplevel: true, } input: { @@ -1446,7 +1521,7 @@ issue_3478_1_ie8_toplevel: { issue_3478_2: { rename = true mangle = { - ie8: false, + ie: false, toplevel: false, } input: { @@ -1479,7 +1554,7 @@ issue_3478_2: { issue_3478_2_ie8: { rename = true mangle = { - ie8: true, + ie: true, toplevel: false, } input: { @@ -1512,7 +1587,7 @@ issue_3478_2_ie8: { issue_3478_2_toplevel: { rename = true mangle = { - ie8: false, + ie: false, toplevel: true, } input: { @@ -1545,7 +1620,7 @@ issue_3478_2_toplevel: { issue_3478_2_ie8_toplevel: { rename = true mangle = { - ie8: true, + ie: true, toplevel: true, } input: { @@ -1578,7 +1653,7 @@ issue_3478_2_ie8_toplevel: { issue_3482_1: { options = { evaluate: true, - ie8: false, + ie: false, } input: { try { @@ -1602,7 +1677,7 @@ issue_3482_1: { issue_3482_1_ie8: { options = { evaluate: true, - ie8: true, + ie: true, } input: { try { @@ -1627,7 +1702,7 @@ issue_3482_1_ie8: { issue_3482_2: { options = { evaluate: true, - ie8: false, + ie: false, } input: { (function() { @@ -1655,7 +1730,7 @@ issue_3482_2: { issue_3482_2_ie8: { options = { evaluate: true, - ie8: true, + ie: true, } input: { (function() { @@ -1682,7 +1757,7 @@ issue_3482_2_ie8: { issue_3484_1: { options = { - ie8: false, + ie: false, side_effects: true, toplevel: false, } @@ -1698,7 +1773,7 @@ issue_3484_1: { issue_3484_1_ie8: { options = { - ie8: true, + ie: true, side_effects: true, toplevel: false, } @@ -1716,7 +1791,7 @@ issue_3484_1_ie8: { issue_3484_1_toplevel: { options = { - ie8: false, + ie: false, side_effects: true, toplevel: true, } @@ -1732,7 +1807,7 @@ issue_3484_1_toplevel: { issue_3484_1_ie8_toplevel: { options = { - ie8: true, + ie: true, side_effects: true, toplevel: true, } @@ -1751,7 +1826,7 @@ issue_3484_1_ie8_toplevel: { issue_3484_2: { options = { evaluate: true, - ie8: false, + ie: false, reduce_vars: true, toplevel: false, } @@ -1773,7 +1848,7 @@ issue_3484_2: { issue_3484_2_ie8: { options = { evaluate: true, - ie8: true, + ie: true, reduce_vars: true, toplevel: false, } @@ -1796,7 +1871,7 @@ issue_3484_2_ie8: { issue_3484_2_toplevel: { options = { evaluate: true, - ie8: false, + ie: false, reduce_vars: true, toplevel: true, } @@ -1818,7 +1893,7 @@ issue_3484_2_toplevel: { issue_3484_2_ie8_toplevel: { options = { evaluate: true, - ie8: true, + ie: true, reduce_vars: true, toplevel: true, } @@ -1841,7 +1916,7 @@ issue_3484_2_ie8_toplevel: { issue_3486: { options = { conditionals: true, - ie8: false, + ie: false, reduce_vars: true, } input: { @@ -1864,7 +1939,7 @@ issue_3486: { issue_3486_ie8: { options = { conditionals: true, - ie8: true, + ie: true, reduce_vars: true, } input: { @@ -1887,7 +1962,7 @@ issue_3486_ie8: { issue_3493: { options = { dead_code: true, - ie8: false, + ie: false, } input: { var c = "PASS"; @@ -1923,7 +1998,7 @@ issue_3493: { issue_3493_ie8: { options = { dead_code: true, - ie8: true, + ie: true, } input: { var c = "PASS"; @@ -1958,7 +2033,7 @@ issue_3493_ie8: { issue_3523: { mangle = { - ie8: false, + ie: false, toplevel: false, } input: { @@ -2004,7 +2079,7 @@ issue_3523: { issue_3523_ie8: { mangle = { - ie8: true, + ie: true, toplevel: false, } input: { @@ -2050,7 +2125,7 @@ issue_3523_ie8: { issue_3523_toplevel: { mangle = { - ie8: false, + ie: false, toplevel: true, } input: { @@ -2096,7 +2171,7 @@ issue_3523_toplevel: { issue_3523_ie8_toplevel: { mangle = { - ie8: true, + ie: true, toplevel: true, } input: { @@ -2143,7 +2218,7 @@ issue_3523_ie8_toplevel: { issue_3523_rename: { rename = true mangle = { - ie8: false, + ie: false, toplevel: false, } input: { @@ -2192,7 +2267,7 @@ issue_3523_rename: { issue_3523_rename_ie8: { rename = true mangle = { - ie8: true, + ie: true, toplevel: false, } input: { @@ -2241,7 +2316,7 @@ issue_3523_rename_ie8: { issue_3523_rename_toplevel: { rename = true mangle = { - ie8: false, + ie: false, toplevel: true, } input: { @@ -2290,7 +2365,7 @@ issue_3523_rename_toplevel: { issue_3523_rename_ie8_toplevel: { rename = true mangle = { - ie8: true, + ie: true, toplevel: true, } input: { @@ -2338,7 +2413,7 @@ issue_3523_rename_ie8_toplevel: { issue_3542: { options = { - ie8: true, + ie: true, reduce_vars: true, toplevel: true, unused: true, @@ -2360,7 +2435,7 @@ issue_3542: { issue_3703: { options = { - ie8: true, + ie: true, reduce_vars: true, toplevel: true, unused: true, @@ -2398,7 +2473,7 @@ issue_3703: { issue_3750: { options = { evaluate: true, - ie8: true, + ie: true, } input: { (function(a) { @@ -2419,7 +2494,7 @@ issue_3750: { issue_3823: { options = { - ie8: true, + ie: true, toplevel: true, unused: true, } @@ -2444,7 +2519,7 @@ issue_3823: { issue_3825: { options = { - ie8: true, + ie: true, pure_getters: "strict", side_effects: true, } @@ -2460,7 +2535,7 @@ issue_3825: { issue_3889: { options = { evaluate: true, - ie8: true, + ie: true, reduce_vars: true, } input: { @@ -2489,13 +2564,13 @@ issue_3889: { issue_3918: { options = { conditionals: true, - ie8: true, + ie: true, reduce_vars: true, toplevel: true, unused: true, } mangle = { - ie8: true, + ie: true, } input: { if (console.log("PASS")) { @@ -2522,7 +2597,7 @@ issue_3918: { issue_3999: { rename = true mangle = { - ie8: true, + ie: true, } input: { (function() { @@ -2559,7 +2634,7 @@ issue_3999: { issue_4001: { options = { collapse_vars: true, - ie8: true, + ie: true, inline: true, reduce_vars: true, sequences: true, @@ -2593,7 +2668,7 @@ issue_4001: { issue_4015: { rename = true mangle = { - ie8: true, + ie: true, toplevel: true, } input: { @@ -2638,7 +2713,7 @@ issue_4019: { unused: true, } mangle = { - ie8: true, + ie: true, toplevel: true, } input: { @@ -2667,7 +2742,7 @@ issue_4028: { unused: true, } mangle = { - ie8: true, + ie: true, } input: { function a() { @@ -2692,7 +2767,7 @@ issue_4028: { issue_2737: { options = { - ie8: true, + ie: true, reduce_vars: true, unused: true, } @@ -2715,7 +2790,7 @@ issue_2737: { single_use_catch_redefined: { options = { - ie8: true, + ie: true, reduce_vars: true, toplevel: true, unused: true, @@ -2747,7 +2822,7 @@ single_use_catch_redefined: { single_use_inline_catch_redefined: { options = { - ie8: true, + ie: true, inline: true, reduce_vars: true, toplevel: true, @@ -2780,7 +2855,7 @@ single_use_inline_catch_redefined: { direct_inline_catch_redefined: { options = { - ie8: true, + ie: true, inline: true, reduce_vars: true, toplevel: true, @@ -2822,13 +2897,13 @@ issue_4186: { options = { dead_code: true, evaluate: true, - ie8: true, + ie: true, reduce_vars: true, toplevel: true, unused: true, } mangle = { - ie8: true, + ie: true, toplevel: true, } input: { @@ -2860,7 +2935,7 @@ issue_4186: { issue_4235: { options = { - ie8: true, + ie: true, unused: true, } input: { @@ -2878,7 +2953,7 @@ issue_4235: { issue_4250: { options = { - ie8: true, + ie: true, loops: true, unused: true, } @@ -2905,7 +2980,7 @@ issue_4250: { issue_4568: { options = { - ie8: true, + ie: true, reduce_vars: true, unused: true, } @@ -2924,7 +2999,7 @@ issue_4568: { issue_4729: { options = { - ie8: true, + ie: true, pure_getters: true, toplevel: true, unused: true, @@ -2950,7 +3025,7 @@ issue_4729: { issue_4928_1: { options = { - ie8: true, + ie: true, toplevel: true, unused: true, } @@ -2971,7 +3046,7 @@ issue_4928_1: { issue_4928_2: { options = { - ie8: true, + ie: true, toplevel: true, unused: true, } @@ -3001,7 +3076,7 @@ issue_4928_2: { issue_4958: { options = { collapse_vars: true, - ie8: true, + ie: true, } input: { console.log(function arguments(a) { @@ -3017,3 +3092,103 @@ issue_4958: { } expect_stdout: "42" } + +issue_5081_call: { + options = { + ie: false, + merge_vars: true, + unused: true, + } + input: { + function f(a) { + var b; + return a(b = "A") + (b += "SS"); + } + console.log(f(function() { + return "P"; + })); + } + expect: { + function f(b) { + // IE5-10: TypeError: Function expected + return b(b = "A") + (b += "SS"); + } + console.log(f(function() { + return "P"; + })); + } + expect_stdout: "PASS" +} + +issue_5081_call_ie: { + options = { + ie: true, + merge_vars: true, + unused: true, + } + input: { + function f(a) { + var b; + return a(b = "A") + (b += "SS"); + } + console.log(f(function() { + return "P"; + })); + } + expect: { + function f(a) { + var b; + return a(b = "A") + (b += "SS"); + } + console.log(f(function() { + return "P"; + })); + } + expect_stdout: "PASS" +} + +issue_5081_property_access: { + options = { + ie: false, + merge_vars: true, + unused: true, + } + input: { + function f(a) { + var b; + return a[b = "A"] + (b += "SS"); + } + console.log(f({ A: "P" })); + } + expect: { + function f(b) { + return b[b = "A"] + (b += "SS"); + } + // IE9-11: undefinedASS + console.log(f({ A: "P" })); + } + expect_stdout: "PASS" +} + +issue_5081_property_access_ie: { + options = { + ie: true, + merge_vars: true, + unused: true, + } + input: { + function f(a) { + var b; + return a[b = "A"] + (b += "SS"); + } + console.log(f({ A: "P" })); + } + expect: { + function f(a) { + var b; + return a[b = "A"] + (b += "SS"); + } + console.log(f({ A: "P" })); + } + expect_stdout: "PASS" +} diff --git a/test/compress/issue-1446.js b/test/compress/issue-1446.js index 30062c7d..6a6033a0 100644 --- a/test/compress/issue-1446.js +++ b/test/compress/issue-1446.js @@ -24,7 +24,7 @@ typeof_eq_undefined: { typeof_eq_undefined_ie8: { options = { comparisons: true, - ie8: true, + ie: true, typeofs: true, } input: { diff --git a/test/compress/issue-1588.js b/test/compress/issue-1588.js index 40efb63b..74f70ba2 100644 --- a/test/compress/issue-1588.js +++ b/test/compress/issue-1588.js @@ -1,9 +1,9 @@ screw_ie8: { options = { - ie8: false, + ie: false, } mangle = { - ie8: false, + ie: false, } input: { try { throw "foo"; } catch (x) { console.log(x); } @@ -16,10 +16,10 @@ screw_ie8: { support_ie8: { options = { - ie8: true, + ie: true, } mangle = { - ie8: true, + ie: true, } input: { try { throw "foo"; } catch (x) { console.log(x); } diff --git a/test/compress/issue-1704.js b/test/compress/issue-1704.js index cfa40fd6..12643c94 100644 --- a/test/compress/issue-1704.js +++ b/test/compress/issue-1704.js @@ -1,10 +1,10 @@ mangle_catch: { options = { - ie8: false, + ie: false, toplevel: false, } mangle = { - ie8: false, + ie: false, toplevel: false, } input: { @@ -22,11 +22,11 @@ mangle_catch: { mangle_catch_ie8: { options = { - ie8: true, + ie: true, toplevel: false, } mangle = { - ie8: true, + ie: true, toplevel: false, } input: { @@ -44,11 +44,11 @@ mangle_catch_ie8: { mangle_catch_var: { options = { - ie8: false, + ie: false, toplevel: false, } mangle = { - ie8: false, + ie: false, toplevel: false, } input: { @@ -66,11 +66,11 @@ mangle_catch_var: { mangle_catch_var_ie8: { options = { - ie8: true, + ie: true, toplevel: false, } mangle = { - ie8: true, + ie: true, toplevel: false, } input: { @@ -88,11 +88,11 @@ mangle_catch_var_ie8: { mangle_catch_toplevel: { options = { - ie8: false, + ie: false, toplevel: true, } mangle = { - ie8: false, + ie: false, toplevel: true, } input: { @@ -110,11 +110,11 @@ mangle_catch_toplevel: { mangle_catch_ie8_toplevel: { options = { - ie8: true, + ie: true, toplevel: true, } mangle = { - ie8: true, + ie: true, toplevel: true, } input: { @@ -132,11 +132,11 @@ mangle_catch_ie8_toplevel: { mangle_catch_var_toplevel: { options = { - ie8: false, + ie: false, toplevel: true, } mangle = { - ie8: false, + ie: false, toplevel: true, } input: { @@ -154,11 +154,11 @@ mangle_catch_var_toplevel: { mangle_catch_var_ie8_toplevel: { options = { - ie8: true, + ie: true, toplevel: true, } mangle = { - ie8: true, + ie: true, toplevel: true, } input: { @@ -176,11 +176,11 @@ mangle_catch_var_ie8_toplevel: { mangle_catch_redef_1: { options = { - ie8: false, + ie: false, toplevel: false, } mangle = { - ie8: false, + ie: false, toplevel: false, } input: { @@ -198,11 +198,11 @@ mangle_catch_redef_1: { mangle_catch_redef_1_ie8: { options = { - ie8: true, + ie: true, toplevel: false, } mangle = { - ie8: true, + ie: true, toplevel: false, } input: { @@ -220,11 +220,11 @@ mangle_catch_redef_1_ie8: { mangle_catch_redef_1_toplevel: { options = { - ie8: false, + ie: false, toplevel: true, } mangle = { - ie8: false, + ie: false, toplevel: true, } input: { @@ -242,11 +242,11 @@ mangle_catch_redef_1_toplevel: { mangle_catch_redef_1_ie8_toplevel: { options = { - ie8: true, + ie: true, toplevel: true, } mangle = { - ie8: true, + ie: true, toplevel: true, } input: { @@ -264,11 +264,11 @@ mangle_catch_redef_1_ie8_toplevel: { mangle_catch_redef_2: { options = { - ie8: false, + ie: false, toplevel: false, } mangle = { - ie8: false, + ie: false, toplevel: false, } input: { @@ -285,11 +285,11 @@ mangle_catch_redef_2: { mangle_catch_redef_2_ie8: { options = { - ie8: true, + ie: true, toplevel: false, } mangle = { - ie8: true, + ie: true, toplevel: false, } input: { @@ -306,11 +306,11 @@ mangle_catch_redef_2_ie8: { mangle_catch_redef_2_toplevel: { options = { - ie8: false, + ie: false, toplevel: true, } mangle = { - ie8: false, + ie: false, toplevel: true, } input: { @@ -327,11 +327,11 @@ mangle_catch_redef_2_toplevel: { mangle_catch_redef_2_ie8_toplevel: { options = { - ie8: true, + ie: true, toplevel: true, } mangle = { - ie8: true, + ie: true, toplevel: true, } input: { @@ -348,7 +348,7 @@ mangle_catch_redef_2_ie8_toplevel: { mangle_catch_redef_3: { mangle = { - ie8: false, + ie: false, toplevel: false, } input: { @@ -371,7 +371,7 @@ mangle_catch_redef_3: { mangle_catch_redef_3_toplevel: { mangle = { - ie8: false, + ie: false, toplevel: true, } input: { @@ -394,7 +394,7 @@ mangle_catch_redef_3_toplevel: { mangle_catch_redef_3_ie8: { mangle = { - ie8: true, + ie: true, toplevel: false, } input: { @@ -417,7 +417,7 @@ mangle_catch_redef_3_ie8: { mangle_catch_redef_3_ie8_toplevel: { mangle = { - ie8: true, + ie: true, toplevel: true, } input: { diff --git a/test/compress/issue-1733.js b/test/compress/issue-1733.js index 15c4a899..fc012ab8 100644 --- a/test/compress/issue-1733.js +++ b/test/compress/issue-1733.js @@ -1,6 +1,6 @@ function_iife_catch: { mangle = { - ie8: false, + ie: false, } input: { function f(n) { @@ -21,7 +21,7 @@ function_iife_catch: { function_iife_catch_ie8: { mangle = { - ie8: true, + ie: true, } input: { function f(n) { @@ -42,7 +42,7 @@ function_iife_catch_ie8: { function_catch_catch: { mangle = { - ie8: false, + ie: false, } input: { var o = 0; @@ -70,7 +70,7 @@ function_catch_catch: { function_catch_catch_ie8: { mangle = { - ie8: true, + ie: true, } input: { var o = 0; diff --git a/test/compress/keep_fargs.js b/test/compress/keep_fargs.js index 2316646e..b69a088b 100644 --- a/test/compress/keep_fargs.js +++ b/test/compress/keep_fargs.js @@ -951,7 +951,7 @@ function_name_mangle_ie8: { unused: true, } mangle = { - ie8: true, + ie: true, toplevel: true, } input: { diff --git a/test/compress/let.js b/test/compress/let.js index 59e60ae0..cdf54fcb 100644 --- a/test/compress/let.js +++ b/test/compress/let.js @@ -1164,7 +1164,7 @@ issue_4225: { issue_4229: { options = { - ie8: true, + ie: true, side_effects: true, } input: { @@ -1195,7 +1195,7 @@ issue_4229: { issue_4231: { options = { - ie8: true, + ie: true, side_effects: true, } input: { @@ -1564,7 +1564,7 @@ issue_4438: { issue_4531_1: { mangle = { - ie8: true, + ie: true, toplevel: true, } input: { @@ -1590,11 +1590,11 @@ issue_4531_1: { issue_4531_2: { options = { evaluate: true, - ie8: true, + ie: true, toplevel: true, } mangle = { - ie8: true, + ie: true, toplevel: true, } input: { diff --git a/test/compress/loops.js b/test/compress/loops.js index c1f075cc..034537a6 100644 --- a/test/compress/loops.js +++ b/test/compress/loops.js @@ -265,7 +265,7 @@ issue_1532_2: { issue_186: { beautify = { beautify: false, - ie8: false, + ie: false, } input: { var x = 3; @@ -284,7 +284,7 @@ issue_186: { issue_186_ie8: { beautify = { beautify: false, - ie8: true, + ie: true, } input: { var x = 3; @@ -303,7 +303,7 @@ issue_186_ie8: { issue_186_beautify: { beautify = { beautify: true, - ie8: false, + ie: false, } input: { var x = 3; @@ -330,7 +330,7 @@ issue_186_beautify: { issue_186_beautify_ie8: { beautify = { beautify: true, - ie8: true, + ie: true, } input: { var x = 3; @@ -360,7 +360,7 @@ issue_186_braces: { beautify = { beautify: false, braces: true, - ie8: false, + ie: false, } input: { var x = 3; @@ -380,7 +380,7 @@ issue_186_braces_ie8: { beautify = { beautify: false, braces: true, - ie8: true, + ie: true, } input: { var x = 3; @@ -400,7 +400,7 @@ issue_186_beautify_braces: { beautify = { beautify: true, braces: true, - ie8: false, + ie: false, } input: { var x = 3; @@ -432,7 +432,7 @@ issue_186_beautify_braces_ie8: { beautify = { beautify: true, braces: true, - ie8: true, + ie: true, } input: { var x = 3; diff --git a/test/compress/merge_vars.js b/test/compress/merge_vars.js index 6c079d90..83bdf4fa 100644 --- a/test/compress/merge_vars.js +++ b/test/compress/merge_vars.js @@ -359,7 +359,7 @@ issue_4107: { issue_4109: { options = { - ie8: true, + ie: true, merge_vars: true, toplevel: true, } diff --git a/test/compress/nullish.js b/test/compress/nullish.js index 27f6aa5a..6ff4c3c7 100644 --- a/test/compress/nullish.js +++ b/test/compress/nullish.js @@ -265,7 +265,7 @@ de_morgan_2e: { issue_4679: { options = { comparisons: true, - ie8: true, + ie: true, } input: { var a; diff --git a/test/compress/optional-chains.js b/test/compress/optional-chains.js index be82b64e..1b810bcf 100644 --- a/test/compress/optional-chains.js +++ b/test/compress/optional-chains.js @@ -256,7 +256,7 @@ issue_4906: { issue_4928: { options = { - ie8: true, + ie: true, toplevel: true, unused: true, } @@ -308,7 +308,7 @@ issue_4947_2: { issue_5039: { options = { - ie8: true, + ie: true, side_effects: true, toplevel: true, unused: true, diff --git a/test/compress/properties.js b/test/compress/properties.js index 8de2dbfb..929c444e 100644 --- a/test/compress/properties.js +++ b/test/compress/properties.js @@ -17,7 +17,7 @@ dot_properties: { properties: true, } beautify = { - ie8: true, + ie: true, } input: { a["foo"] = "bar"; @@ -43,7 +43,7 @@ dot_properties_es5: { properties: true, } beautify = { - ie8: false, + ie: false, } input: { a["foo"] = "bar"; diff --git a/test/compress/rename.js b/test/compress/rename.js index c654e00e..1d553f06 100644 --- a/test/compress/rename.js +++ b/test/compress/rename.js @@ -1,11 +1,11 @@ mangle_catch: { rename = true options = { - ie8: false, + ie: false, toplevel: false, } mangle = { - ie8: false, + ie: false, toplevel: false, } input: { @@ -24,11 +24,11 @@ mangle_catch: { mangle_catch_ie8: { rename = true options = { - ie8: true, + ie: true, toplevel: false, } mangle = { - ie8: true, + ie: true, toplevel: false, } input: { @@ -47,11 +47,11 @@ mangle_catch_ie8: { mangle_catch_var: { rename = true options = { - ie8: false, + ie: false, toplevel: false, } mangle = { - ie8: false, + ie: false, toplevel: false, } input: { @@ -70,11 +70,11 @@ mangle_catch_var: { mangle_catch_var_ie8: { rename = true options = { - ie8: true, + ie: true, toplevel: false, } mangle = { - ie8: true, + ie: true, toplevel: false, } input: { @@ -93,11 +93,11 @@ mangle_catch_var_ie8: { mangle_catch_toplevel: { rename = true options = { - ie8: false, + ie: false, toplevel: true, } mangle = { - ie8: false, + ie: false, toplevel: true, } input: { @@ -116,11 +116,11 @@ mangle_catch_toplevel: { mangle_catch_ie8_toplevel: { rename = true options = { - ie8: true, + ie: true, toplevel: true, } mangle = { - ie8: true, + ie: true, toplevel: true, } input: { @@ -139,11 +139,11 @@ mangle_catch_ie8_toplevel: { mangle_catch_var_toplevel: { rename = true options = { - ie8: false, + ie: false, toplevel: true, } mangle = { - ie8: false, + ie: false, toplevel: true, } input: { @@ -162,11 +162,11 @@ mangle_catch_var_toplevel: { mangle_catch_var_ie8_toplevel: { rename = true options = { - ie8: true, + ie: true, toplevel: true, } mangle = { - ie8: true, + ie: true, toplevel: true, } input: { @@ -185,11 +185,11 @@ mangle_catch_var_ie8_toplevel: { mangle_catch_redef_1: { rename = true options = { - ie8: false, + ie: false, toplevel: false, } mangle = { - ie8: false, + ie: false, toplevel: false, } input: { @@ -208,11 +208,11 @@ mangle_catch_redef_1: { mangle_catch_redef_1_ie8: { rename = true options = { - ie8: true, + ie: true, toplevel: false, } mangle = { - ie8: true, + ie: true, toplevel: false, } input: { @@ -231,11 +231,11 @@ mangle_catch_redef_1_ie8: { mangle_catch_redef_1_toplevel: { rename = true options = { - ie8: false, + ie: false, toplevel: true, } mangle = { - ie8: false, + ie: false, toplevel: true, } input: { @@ -254,11 +254,11 @@ mangle_catch_redef_1_toplevel: { mangle_catch_redef_1_ie8_toplevel: { rename = true options = { - ie8: true, + ie: true, toplevel: true, } mangle = { - ie8: true, + ie: true, toplevel: true, } input: { @@ -277,11 +277,11 @@ mangle_catch_redef_1_ie8_toplevel: { mangle_catch_redef_2: { rename = true options = { - ie8: false, + ie: false, toplevel: false, } mangle = { - ie8: false, + ie: false, toplevel: false, } input: { @@ -299,11 +299,11 @@ mangle_catch_redef_2: { mangle_catch_redef_2_ie8: { rename = true options = { - ie8: true, + ie: true, toplevel: false, } mangle = { - ie8: true, + ie: true, toplevel: false, } input: { @@ -321,11 +321,11 @@ mangle_catch_redef_2_ie8: { mangle_catch_redef_2_toplevel: { rename = true options = { - ie8: false, + ie: false, toplevel: true, } mangle = { - ie8: false, + ie: false, toplevel: true, } input: { @@ -343,11 +343,11 @@ mangle_catch_redef_2_toplevel: { mangle_catch_redef_2_ie8_toplevel: { rename = true options = { - ie8: true, + ie: true, toplevel: true, } mangle = { - ie8: true, + ie: true, toplevel: true, } input: { @@ -365,7 +365,7 @@ mangle_catch_redef_2_ie8_toplevel: { issue_2120_1: { rename = true mangle = { - ie8: false, + ie: false, } input: { "aaaaaaaa"; @@ -401,7 +401,7 @@ issue_2120_1: { issue_2120_2: { rename = true mangle = { - ie8: true, + ie: true, } input: { "aaaaaaaa"; @@ -436,7 +436,7 @@ issue_2120_2: { function_iife_catch: { rename = true mangle = { - ie8: false, + ie: false, } input: { function f(n) { @@ -458,7 +458,7 @@ function_iife_catch: { function_iife_catch_ie8: { rename = true mangle = { - ie8: true, + ie: true, } input: { function f(n) { @@ -480,7 +480,7 @@ function_iife_catch_ie8: { function_catch_catch: { rename = true mangle = { - ie8: false, + ie: false, } input: { var o = 0; @@ -509,7 +509,7 @@ function_catch_catch: { function_catch_catch_ie8: { rename = true mangle = { - ie8: true, + ie: true, } input: { var o = 0; @@ -538,12 +538,12 @@ function_catch_catch_ie8: { function_do_catch_ie8: { rename = true options = { - ie8: true, + ie: true, side_effects: true, unused: true, } mangle = { - ie8: true, + ie: true, toplevel: true, } input: { @@ -615,7 +615,7 @@ function_do_catch_ie8: { issue_3480: { rename = true, mangle = { - ie8: false, + ie: false, toplevel: false, } input: { @@ -647,7 +647,7 @@ issue_3480: { issue_3480_ie8: { rename = true, mangle = { - ie8: true, + ie: true, toplevel: false, } input: { @@ -679,7 +679,7 @@ issue_3480_ie8: { issue_3480_toplevel: { rename = true, mangle = { - ie8: false, + ie: false, toplevel: true, } input: { @@ -711,7 +711,7 @@ issue_3480_toplevel: { issue_3480_ie8_toplevel: { rename = true, mangle = { - ie8: true, + ie: true, toplevel: true, } input: { diff --git a/test/compress/rests.js b/test/compress/rests.js index 6293d58d..18064603 100644 --- a/test/compress/rests.js +++ b/test/compress/rests.js @@ -833,7 +833,7 @@ issue_4562: { issue_4575: { options = { collapse_vars: true, - ie8: true, + ie: true, reduce_vars: true, rests: true, unused: true, diff --git a/test/compress/webkit.js b/test/compress/webkit.js index f67a7b7f..fcaf13ed 100644 --- a/test/compress/webkit.js +++ b/test/compress/webkit.js @@ -61,7 +61,7 @@ lambda_name_mangle: { lambda_name_mangle_ie8: { mangle = { - ie8: true, + ie: true, toplevel: true, } input: { @@ -95,7 +95,7 @@ function_name_mangle_ie8: { unused: true, } mangle = { - ie8: true, + ie: true, toplevel: true, } input: { diff --git a/test/mocha/ie8.js b/test/mocha/ie8.js deleted file mode 100644 index 2187047b..00000000 --- a/test/mocha/ie8.js +++ /dev/null @@ -1,21 +0,0 @@ -var assert = require("assert"); -var UglifyJS = require("../.."); - -describe("ie8", function() { - it("Should be able to minify() with undefined as catch parameter in a try...catch statement", function() { - assert.strictEqual( - UglifyJS.minify([ - "function a(b){", - " try {", - " throw 'Stuff';", - " } catch (undefined) {", - " console.log('caught: ' + undefined);", - " }", - " console.log('undefined is ' + undefined);", - " return b === undefined;", - "};", - ].join("\n")).code, - 'function a(o){try{throw"Stuff"}catch(o){console.log("caught: "+o)}return console.log("undefined is "+void 0),void 0===o}' - ); - }); -}); diff --git a/test/mocha/let.js b/test/mocha/let.js index fd8bd57a..fcaf75c1 100644 --- a/test/mocha/let.js +++ b/test/mocha/let.js @@ -41,7 +41,7 @@ describe("let", function() { } var result = UglifyJS.minify(s, { compress: false, - ie8: true, + ie: true, mangle: { properties: true, } diff --git a/test/reduce.js b/test/reduce.js index 398b74a5..2a164169 100644 --- a/test/reduce.js +++ b/test/reduce.js @@ -22,7 +22,7 @@ module.exports = function reduce_test(testcase, minify_options, reduce_options) reduce_options = reduce_options || {}; var print_options = {}; [ - "ie8", + "ie", "v8", "webkit", ].forEach(function(name) { diff --git a/test/ufuzz/options.json b/test/ufuzz/options.json index 8f6dbe4e..ba84029b 100644 --- a/test/ufuzz/options.json +++ b/test/ufuzz/options.json @@ -16,7 +16,7 @@ }, {}, { - "ie8": true, + "ie": true, "toplevel": true }, { |