From 331171141c43f2273408a6c836e222d20b917388 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nicol=C3=B2=20Ribaudo?= Date: Wed, 2 Aug 2023 13:02:38 +0200 Subject: [PATCH] optional assign is not in general an lval (e.g. no `[a?.b]=c`) --- packages/babel-types/src/ast-types/generated/index.ts | 5 +---- packages/babel-types/src/builders/generated/index.ts | 2 +- packages/babel-types/src/definitions/core.ts | 5 +++-- packages/babel-types/src/validators/generated/index.ts | 1 - 4 files changed, 5 insertions(+), 8 deletions(-) diff --git a/packages/babel-types/src/ast-types/generated/index.ts b/packages/babel-types/src/ast-types/generated/index.ts index e45e194a9d521..745ef031769d4 100644 --- a/packages/babel-types/src/ast-types/generated/index.ts +++ b/packages/babel-types/src/ast-types/generated/index.ts @@ -311,7 +311,7 @@ export interface ArrayExpression extends BaseNode { export interface AssignmentExpression extends BaseNode { type: "AssignmentExpression"; operator: string; - left: LVal; + left: LVal | OptionalMemberExpression; right: Expression; } @@ -2406,7 +2406,6 @@ export type LVal = | AssignmentPattern | ArrayPattern | ObjectPattern - | OptionalMemberExpression | TSParameterProperty | TSAsExpression | TSSatisfiesExpression @@ -5788,7 +5787,6 @@ export interface ParentMaps { | UnionTypeAnnotation; OptionalMemberExpression: | ArrayExpression - | ArrayPattern | ArrowFunctionExpression | AssignmentExpression | AssignmentPattern @@ -5824,7 +5822,6 @@ export interface ParentMaps { | ParenthesizedExpression | PipelineBareFunction | PipelineTopicExpression - | RestElement | ReturnStatement | SequenceExpression | SpreadElement diff --git a/packages/babel-types/src/builders/generated/index.ts b/packages/babel-types/src/builders/generated/index.ts index b29b4d9cb5300..d2665c49419db 100644 --- a/packages/babel-types/src/builders/generated/index.ts +++ b/packages/babel-types/src/builders/generated/index.ts @@ -15,7 +15,7 @@ export function arrayExpression( } export function assignmentExpression( operator: string, - left: t.LVal, + left: t.LVal | t.OptionalMemberExpression, right: t.Expression, ): t.AssignmentExpression { return validateNode({ diff --git a/packages/babel-types/src/definitions/core.ts b/packages/babel-types/src/definitions/core.ts index 6879870535de9..e472904551ff4 100644 --- a/packages/babel-types/src/definitions/core.ts +++ b/packages/babel-types/src/definitions/core.ts @@ -63,10 +63,11 @@ defineType("AssignmentExpression", { }, left: { validate: !process.env.BABEL_TYPES_8_BREAKING - ? assertNodeType("LVal") + ? assertNodeType("LVal", "OptionalMemberExpression") : assertNodeType( "Identifier", "MemberExpression", + "OptionalMemberExpression", "ArrayPattern", "ObjectPattern", "TSAsExpression", @@ -2176,7 +2177,7 @@ defineType("ExportNamespaceSpecifier", { defineType("OptionalMemberExpression", { builder: ["object", "property", "computed", "optional"], visitor: ["object", "property"], - aliases: ["Expression", "LVal"], + aliases: ["Expression"], fields: { object: { validate: assertNodeType("Expression"), diff --git a/packages/babel-types/src/validators/generated/index.ts b/packages/babel-types/src/validators/generated/index.ts index 20aab9f7e8c32..4ea3fb808ff95 100644 --- a/packages/babel-types/src/validators/generated/index.ts +++ b/packages/babel-types/src/validators/generated/index.ts @@ -3162,7 +3162,6 @@ export function isLVal( case "AssignmentPattern": case "ArrayPattern": case "ObjectPattern": - case "OptionalMemberExpression": case "TSParameterProperty": case "TSAsExpression": case "TSSatisfiesExpression":