From: Michael Ficarra Date: Sat, 20 Apr 2013 20:11:05 +0000 (-0500) Subject: fixes #189: use dotted member access when --screw-ie8 option given X-Git-Url: https://git.ndcode.org/public/gitweb.cgi?a=commitdiff_plain;h=5af144522a6fea302abdd0b63d48864de0664207;p=UglifyJS.git fixes #189: use dotted member access when --screw-ie8 option given --- diff --git a/bin/uglifyjs b/bin/uglifyjs index f20976d4..aecc0726 100755 --- a/bin/uglifyjs +++ b/bin/uglifyjs @@ -114,20 +114,21 @@ if (ARGS.acorn) { acorn = require("acorn"); } -var COMPRESS = getOptions("c", true); -var MANGLE = getOptions("m", true); +var COMPRESS = getOptions("c", true) || {}; +var MANGLE = getOptions("m", true) || {}; var BEAUTIFY = getOptions("b", true); -if (COMPRESS && ARGS.d) { +if (ARGS.d) { COMPRESS.global_defs = getOptions("d"); } -if (MANGLE && ARGS.r) { - MANGLE.except = ARGS.r.replace(/^\s+|\s+$/g).split(/\s*,+\s*/); +if (ARGS.screw_ie8) { + COMPRESS.screw_ie8 = true; + MANGLE.screw_ie8 = true; } -if (MANGLE && ARGS.screw_ie8) { - MANGLE.screw_ie8 = true; +if (ARGS.r) { + MANGLE.except = ARGS.r.replace(/^\s+|\s+$/g).split(/\s*,+\s*/); } var OUTPUT_OPTIONS = { diff --git a/lib/compress.js b/lib/compress.js index 216826d6..ebd3dd7a 100644 --- a/lib/compress.js +++ b/lib/compress.js @@ -66,6 +66,7 @@ function Compressor(options, false_by_default) { join_vars : !false_by_default, cascade : !false_by_default, side_effects : !false_by_default, + screw_ie8 : false, warnings : true, global_defs : {} @@ -1961,7 +1962,7 @@ merge(Compressor.prototype, { var prop = self.property; if (prop instanceof AST_String && compressor.option("properties")) { prop = prop.getValue(); - if (is_identifier(prop)) { + if (is_identifier(prop) || compressor.option("screw_ie8")) { return make_node(AST_Dot, self, { expression : self.expression, property : prop diff --git a/test/compress/properties.js b/test/compress/properties.js index 72e245ec..9b066ec9 100644 --- a/test/compress/properties.js +++ b/test/compress/properties.js @@ -23,3 +23,18 @@ dot_properties: { a["if"] = "if"; } } + +dot_properties_es5: { + options = { + properties: true, + screw_ie8: true + }; + input: { + a["foo"] = "bar"; + a["if"] = "if"; + } + expect: { + a.foo = "bar"; + a.if = "if"; + } +}