aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.github/workflows/build.yml2
-rw-r--r--README.md12
-rwxr-xr-xbin/uglifyjs5
-rw-r--r--lib/compress.js42
-rw-r--r--lib/minify.js5
-rw-r--r--lib/output.js10
-rw-r--r--lib/scope.js8
-rw-r--r--test/compress/classes.js6
-rw-r--r--test/compress/collapse_vars.js8
-rw-r--r--test/compress/const.js10
-rw-r--r--test/compress/default-values.js2
-rw-r--r--test/compress/destructured.js2
-rw-r--r--test/compress/drop-unused.js4
-rw-r--r--test/compress/functions.js4
-rw-r--r--test/compress/ie.js (renamed from test/compress/ie8.js)417
-rw-r--r--test/compress/issue-1446.js2
-rw-r--r--test/compress/issue-1588.js8
-rw-r--r--test/compress/issue-1704.js72
-rw-r--r--test/compress/issue-1733.js8
-rw-r--r--test/compress/keep_fargs.js2
-rw-r--r--test/compress/let.js10
-rw-r--r--test/compress/loops.js16
-rw-r--r--test/compress/merge_vars.js2
-rw-r--r--test/compress/nullish.js2
-rw-r--r--test/compress/optional-chains.js4
-rw-r--r--test/compress/properties.js4
-rw-r--r--test/compress/rename.js88
-rw-r--r--test/compress/rests.js2
-rw-r--r--test/compress/webkit.js4
-rw-r--r--test/mocha/ie8.js21
-rw-r--r--test/mocha/let.js2
-rw-r--r--test/reduce.js2
-rw-r--r--test/ufuzz/options.json2
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'
diff --git a/README.md b/README.md
index 06b16551..ea11a02c 100644
--- a/README.md
+++ b/README.md
@@ -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
},
{