support #__PURE__ in ESTree (#4879)
This commit is contained in:
@@ -446,8 +446,22 @@
|
||||
args.value = val;
|
||||
return new AST_String(args);
|
||||
case "number":
|
||||
args.value = val;
|
||||
return new AST_Number(args);
|
||||
if (isNaN(val)) return new AST_NaN(args);
|
||||
var negate, node;
|
||||
if (isFinite(val)) {
|
||||
negate = 1 / val < 0;
|
||||
args.value = negate ? -val : val;
|
||||
node = new AST_Number(args);
|
||||
} else {
|
||||
negate = val < 0;
|
||||
node = new AST_Infinity(args);
|
||||
}
|
||||
return negate ? new AST_UnaryPrefix({
|
||||
start: args.start,
|
||||
end: args.end,
|
||||
operator: "-",
|
||||
expression: node,
|
||||
}) : node;
|
||||
case "boolean":
|
||||
return new (val ? AST_True : AST_False)(args);
|
||||
}
|
||||
@@ -532,6 +546,14 @@
|
||||
name: "this",
|
||||
});
|
||||
},
|
||||
ParenthesizedExpression: function(M) {
|
||||
var node = from_moz(M.expression);
|
||||
if (!node.start.parens) node.start.parens = [];
|
||||
node.start.parens.push(my_start_token(M));
|
||||
if (!node.end.parens) node.end.parens = [];
|
||||
node.end.parens.push(my_end_token(M));
|
||||
return node;
|
||||
},
|
||||
};
|
||||
|
||||
MOZ_TO_ME.UpdateExpression =
|
||||
@@ -570,8 +592,8 @@
|
||||
map("AssignmentExpression", AST_Assign, "operator=operator, left>left, right>right");
|
||||
map("AssignmentPattern", AST_DefaultValue, "left>name, right>value");
|
||||
map("ConditionalExpression", AST_Conditional, "test>condition, consequent>consequent, alternate>alternative");
|
||||
map("NewExpression", AST_New, "callee>expression, arguments@args");
|
||||
map("CallExpression", AST_Call, "callee>expression, arguments@args");
|
||||
map("NewExpression", AST_New, "callee>expression, arguments@args, pure=pure");
|
||||
map("CallExpression", AST_Call, "callee>expression, arguments@args, pure=pure");
|
||||
map("SequenceExpression", AST_Sequence, "expressions@expressions");
|
||||
map("SpreadElement", AST_Spread, "argument>expression");
|
||||
map("ObjectExpression", AST_Object, "properties@properties");
|
||||
|
||||
Reference in New Issue
Block a user