Completely allow evaluating -0
This commit is contained in:
@@ -183,9 +183,18 @@ merge(Compressor.prototype, {
|
||||
value: val
|
||||
}).optimize(compressor);
|
||||
case "number":
|
||||
return make_node(isNaN(val) ? AST_NaN : AST_Number, orig, {
|
||||
value: val
|
||||
}).optimize(compressor);
|
||||
if (isNaN(val)) {
|
||||
return make_node(AST_NaN, orig);
|
||||
}
|
||||
|
||||
if ((1 / val) < 0) {
|
||||
return make_node(AST_UnaryPrefix, orig, {
|
||||
operator: "-",
|
||||
expression: make_node(AST_Number, null, { value: -val })
|
||||
});
|
||||
}
|
||||
|
||||
return make_node(AST_Number, orig, { value: val }).optimize(compressor);
|
||||
case "boolean":
|
||||
return make_node(val ? AST_True : AST_False, orig).optimize(compressor);
|
||||
case "undefined":
|
||||
@@ -1028,10 +1037,7 @@ merge(Compressor.prototype, {
|
||||
return typeof e;
|
||||
case "void": return void ev(e, compressor);
|
||||
case "~": return ~ev(e, compressor);
|
||||
case "-":
|
||||
e = -ev(e, compressor);
|
||||
if (e === -0) throw def;
|
||||
return e;
|
||||
case "-": return -ev(e, compressor);
|
||||
case "+": return +ev(e, compressor);
|
||||
}
|
||||
throw def;
|
||||
|
||||
Reference in New Issue
Block a user