fixes #259: don't unnecessarily quote object properties when --screw-ie8

This commit is contained in:
Michael Ficarra
2013-08-18 19:45:06 -05:00
parent 6ea3f7fe34
commit d9ad3c7cbf
3 changed files with 12 additions and 12 deletions

View File

@@ -129,11 +129,6 @@ if (ARGS.d) {
if (COMPRESS) COMPRESS.global_defs = getOptions("d"); if (COMPRESS) COMPRESS.global_defs = getOptions("d");
} }
if (ARGS.screw_ie8) {
if (COMPRESS) COMPRESS.screw_ie8 = true;
if (MANGLE) MANGLE.screw_ie8 = true;
}
if (ARGS.r) { if (ARGS.r) {
if (MANGLE) MANGLE.except = ARGS.r.replace(/^\s+|\s+$/g).split(/\s*,+\s*/); if (MANGLE) MANGLE.except = ARGS.r.replace(/^\s+|\s+$/g).split(/\s*,+\s*/);
} }
@@ -142,6 +137,12 @@ var OUTPUT_OPTIONS = {
beautify: BEAUTIFY ? true : false beautify: BEAUTIFY ? true : false
}; };
if (ARGS.screw_ie8) {
if (COMPRESS) COMPRESS.screw_ie8 = true;
if (MANGLE) MANGLE.screw_ie8 = true;
OUTPUT_OPTIONS.screw_ie8 = true;
}
if (BEAUTIFY) if (BEAUTIFY)
UglifyJS.merge(OUTPUT_OPTIONS, BEAUTIFY); UglifyJS.merge(OUTPUT_OPTIONS, BEAUTIFY);

View File

@@ -2005,8 +2005,7 @@ merge(Compressor.prototype, {
var prop = self.property; var prop = self.property;
if (prop instanceof AST_String && compressor.option("properties")) { if (prop instanceof AST_String && compressor.option("properties")) {
prop = prop.getValue(); prop = prop.getValue();
if ((compressor.option("screw_ie8") && RESERVED_WORDS(prop)) if (RESERVED_WORDS(prop) ? compressor.option("screw_ie8") : is_identifier_string(prop)) {
|| (!(RESERVED_WORDS(prop)) && is_identifier_string(prop))) {
return make_node(AST_Dot, self, { return make_node(AST_Dot, self, {
expression : self.expression, expression : self.expression,
property : prop property : prop

View File

@@ -54,13 +54,13 @@ function OutputStream(options) {
inline_script : false, inline_script : false,
width : 80, width : 80,
max_line_len : 32000, max_line_len : 32000,
ie_proof : true,
beautify : false, beautify : false,
source_map : null, source_map : null,
bracketize : false, bracketize : false,
semicolons : true, semicolons : true,
comments : false, comments : false,
preserve_line : false, preserve_line : false,
screw_ie8 : false,
negate_iife : !(options && options.beautify), negate_iife : !(options && options.beautify),
}, true); }, true);
@@ -761,7 +761,7 @@ function OutputStream(options) {
if (!self.body) if (!self.body)
return output.force_semicolon(); return output.force_semicolon();
if (self.body instanceof AST_Do if (self.body instanceof AST_Do
&& output.option("ie_proof")) { && !output.option("screw_ie8")) {
// https://github.com/mishoo/UglifyJS/issues/#issue/57 IE // https://github.com/mishoo/UglifyJS/issues/#issue/57 IE
// croaks with "syntax error" on code like this: if (foo) // croaks with "syntax error" on code like this: if (foo)
// do ... while(cond); else ... we need block brackets // do ... while(cond); else ... we need block brackets
@@ -1048,10 +1048,10 @@ function OutputStream(options) {
&& +key + "" == key) && +key + "" == key)
&& parseFloat(key) >= 0) { && parseFloat(key) >= 0) {
output.print(make_num(key)); output.print(make_num(key));
} else if (!is_identifier(key)) { } else if (RESERVED_WORDS(key) ? output.option("screw_ie8") : is_identifier_string(key)) {
output.print_string(key);
} else {
output.print_name(key); output.print_name(key);
} else {
output.print_string(key);
} }
output.colon(); output.colon();
self.value.print(output); self.value.print(output);