@@ -4708,6 +4708,17 @@ merge(Compressor.prototype, {
|
|||||||
if (compressor.option("properties")) {
|
if (compressor.option("properties")) {
|
||||||
var key = prop.evaluate(compressor);
|
var key = prop.evaluate(compressor);
|
||||||
if (key !== prop) {
|
if (key !== prop) {
|
||||||
|
if (typeof key == "string") {
|
||||||
|
if (key == "undefined") {
|
||||||
|
key = undefined;
|
||||||
|
} else {
|
||||||
|
var value = parseFloat(key);
|
||||||
|
if (value.toString() == key) {
|
||||||
|
key = value;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
prop = self.property = best_of_expression(prop, make_node_from_constant(key, prop).transform(compressor));
|
||||||
var property = "" + key;
|
var property = "" + key;
|
||||||
if (is_identifier_string(property)
|
if (is_identifier_string(property)
|
||||||
&& property.length <= prop.print_to_string().length + 1) {
|
&& property.length <= prop.print_to_string().length + 1) {
|
||||||
@@ -4716,14 +4727,6 @@ merge(Compressor.prototype, {
|
|||||||
property: property
|
property: property
|
||||||
}).optimize(compressor);
|
}).optimize(compressor);
|
||||||
}
|
}
|
||||||
if (!(prop instanceof AST_Number)) {
|
|
||||||
var value = parseFloat(property);
|
|
||||||
if (value.toString() == property) {
|
|
||||||
prop = self.property = make_node(AST_Number, prop, {
|
|
||||||
value: value
|
|
||||||
});
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (is_lhs(self, compressor.parent())) return self;
|
if (is_lhs(self, compressor.parent())) return self;
|
||||||
|
|||||||
@@ -1028,3 +1028,29 @@ new_this: {
|
|||||||
}(42);
|
}(42);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
issue_2513: {
|
||||||
|
options = {
|
||||||
|
evaluate: true,
|
||||||
|
properties: true,
|
||||||
|
}
|
||||||
|
input: {
|
||||||
|
!function(Infinity, NaN, undefined) {
|
||||||
|
console.log("a"[1/0], "b"["Infinity"]);
|
||||||
|
console.log("c"[0/0], "d"["NaN"]);
|
||||||
|
console.log("e"[void 0], "f"["undefined"]);
|
||||||
|
}(0, 0, 0);
|
||||||
|
}
|
||||||
|
expect: {
|
||||||
|
!function(Infinity, NaN, undefined) {
|
||||||
|
console.log("a"[1/0], "b"[1/0]);
|
||||||
|
console.log("c".NaN, "d".NaN);
|
||||||
|
console.log("e"[void 0], "f"[void 0]);
|
||||||
|
}(0, 0, 0);
|
||||||
|
}
|
||||||
|
expect_stdout: [
|
||||||
|
"undefined undefined",
|
||||||
|
"undefined undefined",
|
||||||
|
"undefined undefined",
|
||||||
|
]
|
||||||
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user