ensure ie8 works with mangled properties (#2238)

fixes #2234
This commit is contained in:
Alex Lam S.L
2017-07-15 22:50:59 +08:00
committed by GitHub
parent a5ffe2c23f
commit 9e1da9235e
4 changed files with 50 additions and 28 deletions

View File

@@ -4395,7 +4395,7 @@ merge(Compressor.prototype, {
var prop = self.property;
if (prop instanceof AST_String && compressor.option("properties")) {
prop = prop.getValue();
if (RESERVED_WORDS(prop) ? !compressor.option("ie8") : is_identifier_string(prop)) {
if (is_identifier_string(prop)) {
return make_node(AST_Dot, self, {
expression : self.expression,
property : prop
@@ -4432,19 +4432,10 @@ merge(Compressor.prototype, {
if (def) {
return def.optimize(compressor);
}
var prop = self.property;
if (RESERVED_WORDS(prop) && compressor.option("ie8")) {
return make_node(AST_Sub, self, {
expression : self.expression,
property : make_node(AST_String, self, {
value: prop
})
}).optimize(compressor);
}
if (compressor.option("unsafe") && self.expression instanceof AST_Object) {
var values = self.expression.properties;
for (var i = values.length; --i >= 0;) {
if (values[i].key === prop) {
if (values[i].key === self.property) {
var value = values[i].value;
if (value instanceof AST_Function ? !value.contains_this() : !value.has_side_effects(compressor)) {
var obj = self.expression.clone();