diff --git a/packages/babel-parser/src/parser/expression.js b/packages/babel-parser/src/parser/expression.js index 4eb181eea25e..cec1bcd2a555 100644 --- a/packages/babel-parser/src/parser/expression.js +++ b/packages/babel-parser/src/parser/expression.js @@ -660,8 +660,10 @@ export default class ExpressionParser extends LValParser { let node = this.startNodeAt(startPos, startLoc); node.callee = base; + if (state.optionalChainMember) { + node.optional = optional; + } if (optional) { - node.optional = true; node.arguments = this.parseCallExpressionArguments(tt.parenR, false); } else { node.arguments = this.parseCallExpressionArguments( diff --git a/packages/babel-parser/test/fixtures/es2020/optional-chaining/optioanl-chain-expression/output.json b/packages/babel-parser/test/fixtures/es2020/optional-chaining/optioanl-chain-expression/output.json index 64874e4b02fe..d933036a0a54 100644 --- a/packages/babel-parser/test/fixtures/es2020/optional-chaining/optioanl-chain-expression/output.json +++ b/packages/babel-parser/test/fixtures/es2020/optional-chaining/optioanl-chain-expression/output.json @@ -39,6 +39,7 @@ "computed": false, "optional": true }, + "optional": false, "arguments": [] } } diff --git a/packages/babel-parser/test/fixtures/experimental/class-private-properties/optional-chain-object/output.json b/packages/babel-parser/test/fixtures/experimental/class-private-properties/optional-chain-object/output.json index a338c29398f2..2fe350f37ece 100644 --- a/packages/babel-parser/test/fixtures/experimental/class-private-properties/optional-chain-object/output.json +++ b/packages/babel-parser/test/fixtures/experimental/class-private-properties/optional-chain-object/output.json @@ -257,6 +257,7 @@ "computed": false, "optional": false }, + "optional": false, "arguments": [ { "type": "NumericLiteral", @@ -303,6 +304,7 @@ "computed": false, "optional": false }, + "optional": false, "arguments": [] } ] diff --git a/packages/babel-parser/test/fixtures/experimental/class-private-properties/optional-chain-start-call/output.json b/packages/babel-parser/test/fixtures/experimental/class-private-properties/optional-chain-start-call/output.json index fab6f81ebb0c..4f58452a4825 100644 --- a/packages/babel-parser/test/fixtures/experimental/class-private-properties/optional-chain-start-call/output.json +++ b/packages/babel-parser/test/fixtures/experimental/class-private-properties/optional-chain-start-call/output.json @@ -93,6 +93,7 @@ "computed": false, "optional": true }, + "optional": false, "arguments": [] } } diff --git a/packages/babel-parser/test/fixtures/experimental/class-private-properties/optional-chain-start-member-call/output.json b/packages/babel-parser/test/fixtures/experimental/class-private-properties/optional-chain-start-member-call/output.json index 10b49c52f465..3eff2947cf51 100644 --- a/packages/babel-parser/test/fixtures/experimental/class-private-properties/optional-chain-start-member-call/output.json +++ b/packages/babel-parser/test/fixtures/experimental/class-private-properties/optional-chain-start-member-call/output.json @@ -99,6 +99,7 @@ "computed": false, "optional": false }, + "optional": false, "arguments": [ { "type": "NumericLiteral",