.describe("source-map-root", "The path to the original source to be included in the source map.")
.describe("source-map-url", "The path to the source map to be added in //@ sourceMappingURL. Defaults to the value passed with --source-map.")
.describe("in-source-map", "Input source map, useful if you're compressing JS that was generated from some other original code.")
+ .describe("screw-ie", "Pass this flag if you don't care about full compliance with Internet Explorer quirks (by default UglifyJS will try to be IE-proof).")
.describe("p", "Skip prefix for original filenames that appear in source maps. \
For example -p 3 will drop 3 directories from file names and ensure they are relative paths.")
.describe("o", "Output file (default STDOUT).")
.string("d")
.string("comments")
.string("wrap")
+ .boolean("screw-ie")
.boolean("export-all")
.boolean("self")
.boolean("v")
if (SCOPE_IS_NEEDED) {
time_it("scope", function(){
- TOPLEVEL.figure_out_scope();
+ TOPLEVEL.figure_out_scope({ screw_ie: ARGS.screw_ie });
if (ARGS.lint) {
TOPLEVEL.scope_warnings();
}
if (SCOPE_IS_NEEDED) {
time_it("scope", function(){
- TOPLEVEL.figure_out_scope();
+ TOPLEVEL.figure_out_scope({ screw_ie: ARGS.screw_ie });
if (MANGLE) {
TOPLEVEL.compute_char_frequency(MANGLE);
}
}
};
-AST_Toplevel.DEFMETHOD("figure_out_scope", function(){
+AST_Toplevel.DEFMETHOD("figure_out_scope", function(options){
+ options = defaults(options, {
+ screw_ie: false
+ });
// This does what ast_add_scope did in UglifyJS v1.
//
// Part of it could be done at parse time, but it would complicate
node.init_scope_vars();
}
if (node instanceof AST_SymbolLambda) {
- //scope.def_function(node);
- //
- // https://github.com/mishoo/UglifyJS2/issues/24 — MSIE
- // leaks function expression names into the containing
- // scope. Don't like this fix but seems we can't do any
- // better. IE: please die. Please!
- (node.scope = scope.parent_scope).def_function(node);
+ if (options.screw_ie) {
+ scope.def_function(node);
+ } else {
+ // https://github.com/mishoo/UglifyJS2/issues/24 — MSIE
+ // leaks function expression names into the containing
+ // scope. Don't like this fix but seems we can't do any
+ // better. IE: please die. Please!
+ (node.scope = scope.parent_scope).def_function(node);
+ }
}
else if (node instanceof AST_SymbolDefun) {
// Careful here, the scope where this should be defined is