Treat "await" as an invalid identifier (#4954)
It is valid (outside `async` functions) in the "script" parse goal, but always invalid in the "module" parse goal. Fixes #4952.
This commit is contained in:
parent
8859715893
commit
256fcbc58f
@ -0,0 +1,3 @@
|
|||||||
|
export {};
|
||||||
|
|
||||||
|
var obj = { await: function () {} };
|
||||||
@ -0,0 +1,3 @@
|
|||||||
|
export {};
|
||||||
|
|
||||||
|
var obj = { await: function _await() {} };
|
||||||
@ -167,6 +167,9 @@ export function isReferenced(node: Object, parent: Object): boolean {
|
|||||||
export function isValidIdentifier(name: string): boolean {
|
export function isValidIdentifier(name: string): boolean {
|
||||||
if (typeof name !== "string" || esutils.keyword.isReservedWordES6(name, true)) {
|
if (typeof name !== "string" || esutils.keyword.isReservedWordES6(name, true)) {
|
||||||
return false;
|
return false;
|
||||||
|
} else if (name === "await") {
|
||||||
|
// invalid in module, valid in script; better be safe (see #4952)
|
||||||
|
return false;
|
||||||
} else {
|
} else {
|
||||||
return esutils.keyword.isIdentifierNameES6(name);
|
return esutils.keyword.isIdentifierNameES6(name);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -26,5 +26,9 @@ suite("validators", function () {
|
|||||||
|
|
||||||
assert(t.isNodesEquivalent(parse(program), parse(program2)) === false);
|
assert(t.isNodesEquivalent(parse(program), parse(program2)) === false);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
it("rejects 'await' as an identifier", function () {
|
||||||
|
assert(t.isValidIdentifier("await") === false);
|
||||||
|
});
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user