fix corner case with NaN (#4437)

fixes #4436
This commit is contained in:
Alex Lam S.L
2020-12-22 23:01:50 +00:00
committed by GitHub
parent f85a206b9e
commit cb4a02949e
2 changed files with 100 additions and 15 deletions

View File

@@ -9297,10 +9297,9 @@ merge(Compressor.prototype, {
OPT(AST_Infinity, function(self, compressor) {
var lhs = is_lhs(compressor.self(), compressor.parent());
if (lhs && is_atomic(lhs, self)) return self;
if (compressor.option("keep_infinity")
&& !(lhs && !is_atomic(lhs, self))
&& !find_scope(compressor).find_variable("Infinity"))
if (compressor.option("keep_infinity") && !lhs && !find_scope(compressor).find_variable("Infinity")) {
return self;
}
return make_node(AST_Binary, self, {
operator: "/",
left: make_node(AST_Number, self, {
@@ -9314,18 +9313,17 @@ merge(Compressor.prototype, {
OPT(AST_NaN, function(self, compressor) {
var lhs = is_lhs(compressor.self(), compressor.parent());
if (lhs && !is_atomic(lhs, self) || find_scope(compressor).find_variable("NaN")) {
return make_node(AST_Binary, self, {
operator: "/",
left: make_node(AST_Number, self, {
value: 0
}),
right: make_node(AST_Number, self, {
value: 0
})
});
}
return self;
if (lhs && is_atomic(lhs, self)) return self;
if (!lhs && !find_scope(compressor).find_variable("NaN")) return self;
return make_node(AST_Binary, self, {
operator: "/",
left: make_node(AST_Number, self, {
value: 0
}),
right: make_node(AST_Number, self, {
value: 0
})
});
});
function is_reachable(self, defs) {