refactor: move @babel/helper-validator-identifier to ts (#12409)

* refactor: rename helper-validator-identifier to ts

* fix flow errors
This commit is contained in:
Huáng Jùnliàng 2020-12-11 17:41:56 -05:00 committed by GitHub
parent a46cd643ab
commit fc82169b4e
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
6 changed files with 21 additions and 10 deletions

View File

@ -116,3 +116,20 @@ declare module "@babel/code-frame" {
opts?: Options
): string;
}
declare module "@babel/helper-validator-identifier" {
declare function isReservedWord(word: string, inModule: boolean): boolean;
declare function isStrictReservedWord(
word: string,
inModule: boolean
): boolean;
declare function isStrictBindOnlyReservedWord(word: string): boolean;
declare function isStrictBindReservedWord(
word: string,
inModule: boolean
): boolean;
declare function isKeyword(word: string): boolean;
declare function isIdentifierStart(code: number): boolean;
declare function isIdentifierChar(code: number): boolean;
declare function isIdentifierName(name: string): boolean;
}

View File

@ -1,5 +1,3 @@
// @flow
import * as charCodes from "charcodes";
// ## Character categories
@ -38,7 +36,7 @@ const astralIdentifierCodes = [509,0,227,0,150,4,294,9,1368,2,2,1,6,3,41,2,5,0,1
// This has a complexity linear to the value of the code. The
// assumption is that looking up astral identifier characters is
// rare.
function isInAstralSet(code: number, set: $ReadOnlyArray<number>): boolean {
function isInAstralSet(code: number, set: readonly number[]): boolean {
let pos = 0x10000;
for (let i = 0, length = set.length; i < length; i += 2) {
pos += set[i];

View File

@ -1,5 +1,3 @@
// @flow
const reservedWords = {
keyword: [
"break",

View File

@ -522,7 +522,7 @@ defineType("Identifier", {
// Ideally we should call isStrictReservedWord if this node is a descendant
// of a block in strict mode. Also, we should pass the inModule option so
// we can disable "await" in module.
(isKeyword(node.name) || isReservedWord(node.name)) &&
(isKeyword(node.name) || isReservedWord(node.name, false)) &&
// Even if "this" is a keyword, we are using the Identifier
// node to represent it.
node.name !== "this"

View File

@ -15,10 +15,8 @@ export default function isValidIdentifier(
if (typeof name !== "string") return false;
if (reserved) {
if (isKeyword(name) || isStrictReservedWord(name)) {
return false;
} else if (name === "await") {
// invalid in module, valid in script; better be safe (see #4952)
// "await" is invalid in module, valid in script; better be safe (see #4952)
if (isKeyword(name) || isStrictReservedWord(name, true)) {
return false;
}
}