parse out-of-range numerals correctly (#4781)
This commit is contained in:
33
lib/parse.js
33
lib/parse.js
@@ -1763,40 +1763,45 @@ function parse($TEXT, options) {
|
||||
};
|
||||
|
||||
function as_atom_node() {
|
||||
var tok = S.token, ret;
|
||||
var ret, tok = S.token, value = tok.value;
|
||||
switch (tok.type) {
|
||||
case "num":
|
||||
ret = new AST_Number({ start: tok, end: tok, value: tok.value });
|
||||
if (isFinite(value)) {
|
||||
ret = new AST_Number({ value: value });
|
||||
} else {
|
||||
ret = new AST_Infinity();
|
||||
if (value < 0) ret = new AST_UnaryPrefix({ operator: "-", expression: ret });
|
||||
}
|
||||
break;
|
||||
case "bigint":
|
||||
ret = new AST_BigInt({ start: tok, end: tok, value: tok.value });
|
||||
ret = new AST_BigInt({ value: value });
|
||||
break;
|
||||
case "string":
|
||||
ret = new AST_String({
|
||||
start : tok,
|
||||
end : tok,
|
||||
value : tok.value,
|
||||
quote : tok.quote
|
||||
});
|
||||
ret = new AST_String({ value : value, quote : tok.quote });
|
||||
break;
|
||||
case "regexp":
|
||||
ret = new AST_RegExp({ start: tok, end: tok, value: tok.value });
|
||||
ret = new AST_RegExp({ value: value });
|
||||
break;
|
||||
case "atom":
|
||||
switch (tok.value) {
|
||||
switch (value) {
|
||||
case "false":
|
||||
ret = new AST_False({ start: tok, end: tok });
|
||||
ret = new AST_False();
|
||||
break;
|
||||
case "true":
|
||||
ret = new AST_True({ start: tok, end: tok });
|
||||
ret = new AST_True();
|
||||
break;
|
||||
case "null":
|
||||
ret = new AST_Null({ start: tok, end: tok });
|
||||
ret = new AST_Null();
|
||||
break;
|
||||
default:
|
||||
unexpected();
|
||||
}
|
||||
break;
|
||||
default:
|
||||
unexpected();
|
||||
}
|
||||
next();
|
||||
ret.start = ret.end = tok;
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
||||
@@ -1,3 +1,10 @@
|
||||
literal_infinity: {
|
||||
input: {
|
||||
console.log(2e308, -1e2345);
|
||||
}
|
||||
expect_exact: "console.log(1/0,-(1/0));"
|
||||
}
|
||||
|
||||
parentheses_for_prototype_functions: {
|
||||
beautify = {
|
||||
beautify: true,
|
||||
|
||||
Reference in New Issue
Block a user