From 1c1b938356b8832b0255209ae30d0ffa62370308 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Hu=C3=A1ng=20J=C3=B9nli=C3=A0ng?= Date: Sat, 6 Nov 2021 10:45:32 -0400 Subject: [PATCH] fix flow errors --- packages/babel-parser/src/parser/expression.js | 15 +++++++++------ packages/babel-parser/src/parser/lval.js | 2 ++ 2 files changed, 11 insertions(+), 6 deletions(-) diff --git a/packages/babel-parser/src/parser/expression.js b/packages/babel-parser/src/parser/expression.js index 2ecaa67bf94d..1d771b8bd609 100644 --- a/packages/babel-parser/src/parser/expression.js +++ b/packages/babel-parser/src/parser/expression.js @@ -73,6 +73,7 @@ import { cloneIdentifier } from "./node"; /*:: import type { SourceType } from "../options"; +declare var invariant; */ const invalidHackPipeBodies = new Map([ @@ -841,13 +842,14 @@ export default class ExpressionParser extends LValParser { let node = this.startNodeAt(startPos, startLoc); node.callee = base; + const { maybeAsyncArrow, optionalChainMember } = state; - if (state.maybeAsyncArrow) { + if (maybeAsyncArrow) { this.expressionScope.enter(newAsyncArrowScope()); refExpressionErrors = new ExpressionErrors(); } - if (state.optionalChainMember) { + if (optionalChainMember) { node.optional = optional; } @@ -862,9 +864,10 @@ export default class ExpressionParser extends LValParser { refExpressionErrors, ); } - this.finishCallExpression(node, state.optionalChainMember); + this.finishCallExpression(node, optionalChainMember); - if (state.maybeAsyncArrow && this.shouldParseAsyncArrow() && !optional) { + if (maybeAsyncArrow && this.shouldParseAsyncArrow() && !optional) { + /*:: invariant(refExpressionErrors != null) */ state.stop = true; this.checkDestructuringPrivate(refExpressionErrors); this.expressionScope.validateAsPattern(); @@ -874,7 +877,7 @@ export default class ExpressionParser extends LValParser { node, ); } else { - if (state.maybeAsyncArrow) { + if (maybeAsyncArrow) { this.checkExpressionErrors(refExpressionErrors, true); this.expressionScope.exit(); } @@ -2235,7 +2238,7 @@ export default class ExpressionParser extends LValParser { case tt.privateName: { // the class private key has been handled in parseClassElementName const privateKeyPos = this.state.start; - if (refExpressionErrors !== undefined) { + if (refExpressionErrors != null) { if (refExpressionErrors.privateKey === -1) { refExpressionErrors.privateKey = privateKeyPos; } diff --git a/packages/babel-parser/src/parser/lval.js b/packages/babel-parser/src/parser/lval.js index 85eb5b2c48b8..200012247f54 100644 --- a/packages/babel-parser/src/parser/lval.js +++ b/packages/babel-parser/src/parser/lval.js @@ -16,6 +16,7 @@ import type { /*:: ObjectMember, */ /*:: TsNamedTypeElementBase, */ /*:: Identifier, */ + /*:: PrivateName, */ /*:: ObjectExpression, */ /*:: ObjectPattern, */ } from "../types"; @@ -63,6 +64,7 @@ export default class LValParser extends NodeUtils { +parsePropertyName: ( prop: ObjectOrClassMember | ClassMember | TsNamedTypeElementBase, ) => Expression | Identifier; + +parsePrivateName: () => PrivateName */ // Forward-declaration: defined in statement.js /*::