fix corner case in unsafe (#4755)
This commit is contained in:
@@ -8581,17 +8581,17 @@ merge(Compressor.prototype, {
|
||||
break;
|
||||
case "charAt":
|
||||
if (self.args.length < 2) {
|
||||
var node = make_node(AST_Sub, self, {
|
||||
var node = make_node(AST_Binary, self, {
|
||||
operator: "||",
|
||||
left: make_node(AST_Sub, self, {
|
||||
expression: exp.expression,
|
||||
property: self.args.length ? make_node(AST_Binary, self.args[0], {
|
||||
operator: "|",
|
||||
left: make_node(AST_Number, self, {
|
||||
value: 0
|
||||
}),
|
||||
right: self.args[0]
|
||||
}) : make_node(AST_Number, self, {
|
||||
value: 0
|
||||
})
|
||||
left: make_node(AST_Number, self, { value: 0 }),
|
||||
right: self.args[0],
|
||||
}) : make_node(AST_Number, self, { value: 0 }),
|
||||
}).optimize(compressor),
|
||||
right: make_node(AST_String, self, { value: "" }),
|
||||
});
|
||||
node.is_string = return_true;
|
||||
return node.optimize(compressor);
|
||||
|
||||
@@ -847,6 +847,8 @@ unsafe_charAt_noop: {
|
||||
unsafe: true,
|
||||
}
|
||||
input: {
|
||||
s = "foo";
|
||||
x = 42;
|
||||
console.log(
|
||||
s.charAt(0),
|
||||
"string".charAt(x),
|
||||
@@ -854,12 +856,15 @@ unsafe_charAt_noop: {
|
||||
);
|
||||
}
|
||||
expect: {
|
||||
s = "foo";
|
||||
x = 42;
|
||||
console.log(
|
||||
s[0],
|
||||
"string"[0 | x],
|
||||
(typeof x)[0]
|
||||
s[0] || "",
|
||||
"string"[0 | x] || "",
|
||||
(typeof x)[0] || ""
|
||||
);
|
||||
}
|
||||
expect_stdout: "f n"
|
||||
}
|
||||
|
||||
issue_1649: {
|
||||
|
||||
Reference in New Issue
Block a user