From 7cff730045d386788a75529440455e60e4285db4 Mon Sep 17 00:00:00 2001 From: macabeus Date: Sat, 4 Jan 2020 23:49:18 +0000 Subject: [PATCH 1/3] fix: optional-chaining should work correctly with ts non-null operator --- .../babel-plugin-proposal-optional-chaining/src/index.js | 5 +++++ .../input.ts | 1 + .../options.json | 4 ++++ .../output.js | 3 +++ .../input.ts | 1 + .../options.json | 6 ++++++ .../output.js | 3 +++ .../input.ts | 1 + .../options.json | 6 ++++++ .../output.js | 1 + 10 files changed, 31 insertions(+) create mode 100644 packages/babel-plugin-proposal-optional-chaining/test/fixtures/regression/10959-proposal-optional-chaining-and-preset-typescript/input.ts create mode 100644 packages/babel-plugin-proposal-optional-chaining/test/fixtures/regression/10959-proposal-optional-chaining-and-preset-typescript/options.json create mode 100644 packages/babel-plugin-proposal-optional-chaining/test/fixtures/regression/10959-proposal-optional-chaining-and-preset-typescript/output.js create mode 100644 packages/babel-plugin-proposal-optional-chaining/test/fixtures/regression/10959-proposal-optional-chaining-and-typescript-syntax/input.ts create mode 100644 packages/babel-plugin-proposal-optional-chaining/test/fixtures/regression/10959-proposal-optional-chaining-and-typescript-syntax/options.json create mode 100644 packages/babel-plugin-proposal-optional-chaining/test/fixtures/regression/10959-proposal-optional-chaining-and-typescript-syntax/output.js create mode 100644 packages/babel-plugin-proposal-optional-chaining/test/fixtures/regression/10959-syntax-optional-chaining-and-transform-typescript/input.ts create mode 100644 packages/babel-plugin-proposal-optional-chaining/test/fixtures/regression/10959-syntax-optional-chaining-and-transform-typescript/options.json create mode 100644 packages/babel-plugin-proposal-optional-chaining/test/fixtures/regression/10959-syntax-optional-chaining-and-transform-typescript/output.js diff --git a/packages/babel-plugin-proposal-optional-chaining/src/index.js b/packages/babel-plugin-proposal-optional-chaining/src/index.js index 2cfce5263b46..fd3f2557594f 100644 --- a/packages/babel-plugin-proposal-optional-chaining/src/index.js +++ b/packages/babel-plugin-proposal-optional-chaining/src/index.js @@ -44,6 +44,11 @@ export default declare((api, options) => { optionalPath.node.type = "CallExpression"; optionalPath = optionalPath.get("callee"); } + + // unwrap a TSNonNullExpression if need + if (optionalPath.isTSNonNullExpression()) { + optionalPath.replaceWith(optionalPath.node.expression); + } } let replacementPath = path; diff --git a/packages/babel-plugin-proposal-optional-chaining/test/fixtures/regression/10959-proposal-optional-chaining-and-preset-typescript/input.ts b/packages/babel-plugin-proposal-optional-chaining/test/fixtures/regression/10959-proposal-optional-chaining-and-preset-typescript/input.ts new file mode 100644 index 000000000000..2f226b314a3f --- /dev/null +++ b/packages/babel-plugin-proposal-optional-chaining/test/fixtures/regression/10959-proposal-optional-chaining-and-preset-typescript/input.ts @@ -0,0 +1 @@ +a?.b!.c diff --git a/packages/babel-plugin-proposal-optional-chaining/test/fixtures/regression/10959-proposal-optional-chaining-and-preset-typescript/options.json b/packages/babel-plugin-proposal-optional-chaining/test/fixtures/regression/10959-proposal-optional-chaining-and-preset-typescript/options.json new file mode 100644 index 000000000000..dd5a2ab5b31a --- /dev/null +++ b/packages/babel-plugin-proposal-optional-chaining/test/fixtures/regression/10959-proposal-optional-chaining-and-preset-typescript/options.json @@ -0,0 +1,4 @@ +{ + "plugins": ["proposal-optional-chaining"], + "presets": ["../../../../../babel-preset-typescript"] +} diff --git a/packages/babel-plugin-proposal-optional-chaining/test/fixtures/regression/10959-proposal-optional-chaining-and-preset-typescript/output.js b/packages/babel-plugin-proposal-optional-chaining/test/fixtures/regression/10959-proposal-optional-chaining-and-preset-typescript/output.js new file mode 100644 index 000000000000..44183a7d8f68 --- /dev/null +++ b/packages/babel-plugin-proposal-optional-chaining/test/fixtures/regression/10959-proposal-optional-chaining-and-preset-typescript/output.js @@ -0,0 +1,3 @@ +var _a; + +(_a = a) === null || _a === void 0 ? void 0 : _a.b.c; diff --git a/packages/babel-plugin-proposal-optional-chaining/test/fixtures/regression/10959-proposal-optional-chaining-and-typescript-syntax/input.ts b/packages/babel-plugin-proposal-optional-chaining/test/fixtures/regression/10959-proposal-optional-chaining-and-typescript-syntax/input.ts new file mode 100644 index 000000000000..2f226b314a3f --- /dev/null +++ b/packages/babel-plugin-proposal-optional-chaining/test/fixtures/regression/10959-proposal-optional-chaining-and-typescript-syntax/input.ts @@ -0,0 +1 @@ +a?.b!.c diff --git a/packages/babel-plugin-proposal-optional-chaining/test/fixtures/regression/10959-proposal-optional-chaining-and-typescript-syntax/options.json b/packages/babel-plugin-proposal-optional-chaining/test/fixtures/regression/10959-proposal-optional-chaining-and-typescript-syntax/options.json new file mode 100644 index 000000000000..3bfa42040c1d --- /dev/null +++ b/packages/babel-plugin-proposal-optional-chaining/test/fixtures/regression/10959-proposal-optional-chaining-and-typescript-syntax/options.json @@ -0,0 +1,6 @@ +{ + "plugins": [ + "proposal-optional-chaining", + "../../../../../babel-plugin-syntax-typescript" + ] +} diff --git a/packages/babel-plugin-proposal-optional-chaining/test/fixtures/regression/10959-proposal-optional-chaining-and-typescript-syntax/output.js b/packages/babel-plugin-proposal-optional-chaining/test/fixtures/regression/10959-proposal-optional-chaining-and-typescript-syntax/output.js new file mode 100644 index 000000000000..44183a7d8f68 --- /dev/null +++ b/packages/babel-plugin-proposal-optional-chaining/test/fixtures/regression/10959-proposal-optional-chaining-and-typescript-syntax/output.js @@ -0,0 +1,3 @@ +var _a; + +(_a = a) === null || _a === void 0 ? void 0 : _a.b.c; diff --git a/packages/babel-plugin-proposal-optional-chaining/test/fixtures/regression/10959-syntax-optional-chaining-and-transform-typescript/input.ts b/packages/babel-plugin-proposal-optional-chaining/test/fixtures/regression/10959-syntax-optional-chaining-and-transform-typescript/input.ts new file mode 100644 index 000000000000..2f226b314a3f --- /dev/null +++ b/packages/babel-plugin-proposal-optional-chaining/test/fixtures/regression/10959-syntax-optional-chaining-and-transform-typescript/input.ts @@ -0,0 +1 @@ +a?.b!.c diff --git a/packages/babel-plugin-proposal-optional-chaining/test/fixtures/regression/10959-syntax-optional-chaining-and-transform-typescript/options.json b/packages/babel-plugin-proposal-optional-chaining/test/fixtures/regression/10959-syntax-optional-chaining-and-transform-typescript/options.json new file mode 100644 index 000000000000..b24a7f03b4a7 --- /dev/null +++ b/packages/babel-plugin-proposal-optional-chaining/test/fixtures/regression/10959-syntax-optional-chaining-and-transform-typescript/options.json @@ -0,0 +1,6 @@ +{ + "plugins": [ + "../../../../../babel-plugin-syntax-optional-chaining", + "../../../../../babel-plugin-transform-typescript" + ] +} diff --git a/packages/babel-plugin-proposal-optional-chaining/test/fixtures/regression/10959-syntax-optional-chaining-and-transform-typescript/output.js b/packages/babel-plugin-proposal-optional-chaining/test/fixtures/regression/10959-syntax-optional-chaining-and-transform-typescript/output.js new file mode 100644 index 000000000000..e0603fc5f0f9 --- /dev/null +++ b/packages/babel-plugin-proposal-optional-chaining/test/fixtures/regression/10959-syntax-optional-chaining-and-transform-typescript/output.js @@ -0,0 +1 @@ +a?.b.c; From 2a72af81f706f0f938726b3645ae247b65c9c4db Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nicol=C3=B2=20Ribaudo?= Date: Tue, 7 Apr 2020 23:00:55 +0200 Subject: [PATCH 2/3] Keep ! when not transforming TS --- packages/babel-plugin-proposal-optional-chaining/src/index.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/babel-plugin-proposal-optional-chaining/src/index.js b/packages/babel-plugin-proposal-optional-chaining/src/index.js index fd3f2557594f..604f5a4fe8f4 100644 --- a/packages/babel-plugin-proposal-optional-chaining/src/index.js +++ b/packages/babel-plugin-proposal-optional-chaining/src/index.js @@ -47,7 +47,7 @@ export default declare((api, options) => { // unwrap a TSNonNullExpression if need if (optionalPath.isTSNonNullExpression()) { - optionalPath.replaceWith(optionalPath.node.expression); + optionalPath = optionalPath.get("expression"); } } From d490b962d5fedbd60f85d3028603ad8b66be1ee4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nicol=C3=B2=20Ribaudo?= Date: Tue, 7 Apr 2020 23:01:01 +0200 Subject: [PATCH 3/3] Update tests --- .../input.ts | 1 - .../options.json | 4 ---- .../output.js | 3 --- .../input.ts | 1 - .../output.js | 3 --- .../input.ts | 1 - .../options.json | 6 ------ .../output.js | 1 - .../10959-transform-optional-chaining/input.ts | 8 ++++++++ .../options.json | 2 +- .../10959-transform-optional-chaining/output.js | 10 ++++++++++ .../10959-transform-ts-and-optional-chaining/input.ts | 8 ++++++++ .../options.json | 3 +++ .../10959-transform-ts-and-optional-chaining/output.js | 10 ++++++++++ .../fixtures/regression/10959-transform-ts/input.ts | 8 ++++++++ .../regression/10959-transform-ts/options.json | 3 +++ .../fixtures/regression/10959-transform-ts/output.js | 8 ++++++++ 17 files changed, 59 insertions(+), 21 deletions(-) delete mode 100644 packages/babel-plugin-proposal-optional-chaining/test/fixtures/regression/10959-proposal-optional-chaining-and-preset-typescript/input.ts delete mode 100644 packages/babel-plugin-proposal-optional-chaining/test/fixtures/regression/10959-proposal-optional-chaining-and-preset-typescript/options.json delete mode 100644 packages/babel-plugin-proposal-optional-chaining/test/fixtures/regression/10959-proposal-optional-chaining-and-preset-typescript/output.js delete mode 100644 packages/babel-plugin-proposal-optional-chaining/test/fixtures/regression/10959-proposal-optional-chaining-and-typescript-syntax/input.ts delete mode 100644 packages/babel-plugin-proposal-optional-chaining/test/fixtures/regression/10959-proposal-optional-chaining-and-typescript-syntax/output.js delete mode 100644 packages/babel-plugin-proposal-optional-chaining/test/fixtures/regression/10959-syntax-optional-chaining-and-transform-typescript/input.ts delete mode 100644 packages/babel-plugin-proposal-optional-chaining/test/fixtures/regression/10959-syntax-optional-chaining-and-transform-typescript/options.json delete mode 100644 packages/babel-plugin-proposal-optional-chaining/test/fixtures/regression/10959-syntax-optional-chaining-and-transform-typescript/output.js create mode 100644 packages/babel-plugin-proposal-optional-chaining/test/fixtures/regression/10959-transform-optional-chaining/input.ts rename packages/babel-plugin-proposal-optional-chaining/test/fixtures/regression/{10959-proposal-optional-chaining-and-typescript-syntax => 10959-transform-optional-chaining}/options.json (52%) create mode 100644 packages/babel-plugin-proposal-optional-chaining/test/fixtures/regression/10959-transform-optional-chaining/output.js create mode 100644 packages/babel-plugin-proposal-optional-chaining/test/fixtures/regression/10959-transform-ts-and-optional-chaining/input.ts create mode 100644 packages/babel-plugin-proposal-optional-chaining/test/fixtures/regression/10959-transform-ts-and-optional-chaining/options.json create mode 100644 packages/babel-plugin-proposal-optional-chaining/test/fixtures/regression/10959-transform-ts-and-optional-chaining/output.js create mode 100644 packages/babel-plugin-proposal-optional-chaining/test/fixtures/regression/10959-transform-ts/input.ts create mode 100644 packages/babel-plugin-proposal-optional-chaining/test/fixtures/regression/10959-transform-ts/options.json create mode 100644 packages/babel-plugin-proposal-optional-chaining/test/fixtures/regression/10959-transform-ts/output.js diff --git a/packages/babel-plugin-proposal-optional-chaining/test/fixtures/regression/10959-proposal-optional-chaining-and-preset-typescript/input.ts b/packages/babel-plugin-proposal-optional-chaining/test/fixtures/regression/10959-proposal-optional-chaining-and-preset-typescript/input.ts deleted file mode 100644 index 2f226b314a3f..000000000000 --- a/packages/babel-plugin-proposal-optional-chaining/test/fixtures/regression/10959-proposal-optional-chaining-and-preset-typescript/input.ts +++ /dev/null @@ -1 +0,0 @@ -a?.b!.c diff --git a/packages/babel-plugin-proposal-optional-chaining/test/fixtures/regression/10959-proposal-optional-chaining-and-preset-typescript/options.json b/packages/babel-plugin-proposal-optional-chaining/test/fixtures/regression/10959-proposal-optional-chaining-and-preset-typescript/options.json deleted file mode 100644 index dd5a2ab5b31a..000000000000 --- a/packages/babel-plugin-proposal-optional-chaining/test/fixtures/regression/10959-proposal-optional-chaining-and-preset-typescript/options.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "plugins": ["proposal-optional-chaining"], - "presets": ["../../../../../babel-preset-typescript"] -} diff --git a/packages/babel-plugin-proposal-optional-chaining/test/fixtures/regression/10959-proposal-optional-chaining-and-preset-typescript/output.js b/packages/babel-plugin-proposal-optional-chaining/test/fixtures/regression/10959-proposal-optional-chaining-and-preset-typescript/output.js deleted file mode 100644 index 44183a7d8f68..000000000000 --- a/packages/babel-plugin-proposal-optional-chaining/test/fixtures/regression/10959-proposal-optional-chaining-and-preset-typescript/output.js +++ /dev/null @@ -1,3 +0,0 @@ -var _a; - -(_a = a) === null || _a === void 0 ? void 0 : _a.b.c; diff --git a/packages/babel-plugin-proposal-optional-chaining/test/fixtures/regression/10959-proposal-optional-chaining-and-typescript-syntax/input.ts b/packages/babel-plugin-proposal-optional-chaining/test/fixtures/regression/10959-proposal-optional-chaining-and-typescript-syntax/input.ts deleted file mode 100644 index 2f226b314a3f..000000000000 --- a/packages/babel-plugin-proposal-optional-chaining/test/fixtures/regression/10959-proposal-optional-chaining-and-typescript-syntax/input.ts +++ /dev/null @@ -1 +0,0 @@ -a?.b!.c diff --git a/packages/babel-plugin-proposal-optional-chaining/test/fixtures/regression/10959-proposal-optional-chaining-and-typescript-syntax/output.js b/packages/babel-plugin-proposal-optional-chaining/test/fixtures/regression/10959-proposal-optional-chaining-and-typescript-syntax/output.js deleted file mode 100644 index 44183a7d8f68..000000000000 --- a/packages/babel-plugin-proposal-optional-chaining/test/fixtures/regression/10959-proposal-optional-chaining-and-typescript-syntax/output.js +++ /dev/null @@ -1,3 +0,0 @@ -var _a; - -(_a = a) === null || _a === void 0 ? void 0 : _a.b.c; diff --git a/packages/babel-plugin-proposal-optional-chaining/test/fixtures/regression/10959-syntax-optional-chaining-and-transform-typescript/input.ts b/packages/babel-plugin-proposal-optional-chaining/test/fixtures/regression/10959-syntax-optional-chaining-and-transform-typescript/input.ts deleted file mode 100644 index 2f226b314a3f..000000000000 --- a/packages/babel-plugin-proposal-optional-chaining/test/fixtures/regression/10959-syntax-optional-chaining-and-transform-typescript/input.ts +++ /dev/null @@ -1 +0,0 @@ -a?.b!.c diff --git a/packages/babel-plugin-proposal-optional-chaining/test/fixtures/regression/10959-syntax-optional-chaining-and-transform-typescript/options.json b/packages/babel-plugin-proposal-optional-chaining/test/fixtures/regression/10959-syntax-optional-chaining-and-transform-typescript/options.json deleted file mode 100644 index b24a7f03b4a7..000000000000 --- a/packages/babel-plugin-proposal-optional-chaining/test/fixtures/regression/10959-syntax-optional-chaining-and-transform-typescript/options.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "plugins": [ - "../../../../../babel-plugin-syntax-optional-chaining", - "../../../../../babel-plugin-transform-typescript" - ] -} diff --git a/packages/babel-plugin-proposal-optional-chaining/test/fixtures/regression/10959-syntax-optional-chaining-and-transform-typescript/output.js b/packages/babel-plugin-proposal-optional-chaining/test/fixtures/regression/10959-syntax-optional-chaining-and-transform-typescript/output.js deleted file mode 100644 index e0603fc5f0f9..000000000000 --- a/packages/babel-plugin-proposal-optional-chaining/test/fixtures/regression/10959-syntax-optional-chaining-and-transform-typescript/output.js +++ /dev/null @@ -1 +0,0 @@ -a?.b.c; diff --git a/packages/babel-plugin-proposal-optional-chaining/test/fixtures/regression/10959-transform-optional-chaining/input.ts b/packages/babel-plugin-proposal-optional-chaining/test/fixtures/regression/10959-transform-optional-chaining/input.ts new file mode 100644 index 000000000000..f263a5b2dfb3 --- /dev/null +++ b/packages/babel-plugin-proposal-optional-chaining/test/fixtures/regression/10959-transform-optional-chaining/input.ts @@ -0,0 +1,8 @@ +a?.b!.c; +a?.b!.c.d; +a?.b.c!.d; +a!.b?.c; +a?.b!?.c; +a?.b!.c?.c; +(a?.b!).c; +(a?.b)!.c; diff --git a/packages/babel-plugin-proposal-optional-chaining/test/fixtures/regression/10959-proposal-optional-chaining-and-typescript-syntax/options.json b/packages/babel-plugin-proposal-optional-chaining/test/fixtures/regression/10959-transform-optional-chaining/options.json similarity index 52% rename from packages/babel-plugin-proposal-optional-chaining/test/fixtures/regression/10959-proposal-optional-chaining-and-typescript-syntax/options.json rename to packages/babel-plugin-proposal-optional-chaining/test/fixtures/regression/10959-transform-optional-chaining/options.json index 3bfa42040c1d..d48b5d0e7350 100644 --- a/packages/babel-plugin-proposal-optional-chaining/test/fixtures/regression/10959-proposal-optional-chaining-and-typescript-syntax/options.json +++ b/packages/babel-plugin-proposal-optional-chaining/test/fixtures/regression/10959-transform-optional-chaining/options.json @@ -1,6 +1,6 @@ { "plugins": [ "proposal-optional-chaining", - "../../../../../babel-plugin-syntax-typescript" + "syntax-typescript" ] } diff --git a/packages/babel-plugin-proposal-optional-chaining/test/fixtures/regression/10959-transform-optional-chaining/output.js b/packages/babel-plugin-proposal-optional-chaining/test/fixtures/regression/10959-transform-optional-chaining/output.js new file mode 100644 index 000000000000..5bcddf99c677 --- /dev/null +++ b/packages/babel-plugin-proposal-optional-chaining/test/fixtures/regression/10959-transform-optional-chaining/output.js @@ -0,0 +1,10 @@ +var _a, _a2, _a3, _b, _a4, _ref, _a5, _c, _a6, _a7; + +(_a = a) === null || _a === void 0 ? void 0 : _a.b!.c; +(_a2 = a) === null || _a2 === void 0 ? void 0 : _a2.b!.c.d; +(_a3 = a) === null || _a3 === void 0 ? void 0 : _a3.b.c!.d; +(_b = a!.b) === null || _b === void 0 ? void 0 : _b.c; +(_a4 = a) === null || _a4 === void 0 ? void 0 : (_ref = _a4.b!) === null || _ref === void 0 ? void 0 : _ref.c; +(_a5 = a) === null || _a5 === void 0 ? void 0 : (_c = _a5.b!.c) === null || _c === void 0 ? void 0 : _c.c; +((_a6 = a) === null || _a6 === void 0 ? void 0 : _a6.b)!.c; +((_a7 = a) === null || _a7 === void 0 ? void 0 : _a7.b)!.c; diff --git a/packages/babel-plugin-proposal-optional-chaining/test/fixtures/regression/10959-transform-ts-and-optional-chaining/input.ts b/packages/babel-plugin-proposal-optional-chaining/test/fixtures/regression/10959-transform-ts-and-optional-chaining/input.ts new file mode 100644 index 000000000000..f263a5b2dfb3 --- /dev/null +++ b/packages/babel-plugin-proposal-optional-chaining/test/fixtures/regression/10959-transform-ts-and-optional-chaining/input.ts @@ -0,0 +1,8 @@ +a?.b!.c; +a?.b!.c.d; +a?.b.c!.d; +a!.b?.c; +a?.b!?.c; +a?.b!.c?.c; +(a?.b!).c; +(a?.b)!.c; diff --git a/packages/babel-plugin-proposal-optional-chaining/test/fixtures/regression/10959-transform-ts-and-optional-chaining/options.json b/packages/babel-plugin-proposal-optional-chaining/test/fixtures/regression/10959-transform-ts-and-optional-chaining/options.json new file mode 100644 index 000000000000..7249169ec0aa --- /dev/null +++ b/packages/babel-plugin-proposal-optional-chaining/test/fixtures/regression/10959-transform-ts-and-optional-chaining/options.json @@ -0,0 +1,3 @@ +{ + "plugins": ["proposal-optional-chaining", "transform-typescript"] +} diff --git a/packages/babel-plugin-proposal-optional-chaining/test/fixtures/regression/10959-transform-ts-and-optional-chaining/output.js b/packages/babel-plugin-proposal-optional-chaining/test/fixtures/regression/10959-transform-ts-and-optional-chaining/output.js new file mode 100644 index 000000000000..8af9f8dc0f23 --- /dev/null +++ b/packages/babel-plugin-proposal-optional-chaining/test/fixtures/regression/10959-transform-ts-and-optional-chaining/output.js @@ -0,0 +1,10 @@ +var _a, _a2, _a3, _b, _a4, _ref, _a5, _c, _a6, _a7; + +(_a = a) === null || _a === void 0 ? void 0 : _a.b.c; +(_a2 = a) === null || _a2 === void 0 ? void 0 : _a2.b.c.d; +(_a3 = a) === null || _a3 === void 0 ? void 0 : _a3.b.c.d; +(_b = a.b) === null || _b === void 0 ? void 0 : _b.c; +(_a4 = a) === null || _a4 === void 0 ? void 0 : (_ref = _a4.b) === null || _ref === void 0 ? void 0 : _ref.c; +(_a5 = a) === null || _a5 === void 0 ? void 0 : (_c = _a5.b.c) === null || _c === void 0 ? void 0 : _c.c; +((_a6 = a) === null || _a6 === void 0 ? void 0 : _a6.b).c; +((_a7 = a) === null || _a7 === void 0 ? void 0 : _a7.b).c; diff --git a/packages/babel-plugin-proposal-optional-chaining/test/fixtures/regression/10959-transform-ts/input.ts b/packages/babel-plugin-proposal-optional-chaining/test/fixtures/regression/10959-transform-ts/input.ts new file mode 100644 index 000000000000..f263a5b2dfb3 --- /dev/null +++ b/packages/babel-plugin-proposal-optional-chaining/test/fixtures/regression/10959-transform-ts/input.ts @@ -0,0 +1,8 @@ +a?.b!.c; +a?.b!.c.d; +a?.b.c!.d; +a!.b?.c; +a?.b!?.c; +a?.b!.c?.c; +(a?.b!).c; +(a?.b)!.c; diff --git a/packages/babel-plugin-proposal-optional-chaining/test/fixtures/regression/10959-transform-ts/options.json b/packages/babel-plugin-proposal-optional-chaining/test/fixtures/regression/10959-transform-ts/options.json new file mode 100644 index 000000000000..5c79172a6082 --- /dev/null +++ b/packages/babel-plugin-proposal-optional-chaining/test/fixtures/regression/10959-transform-ts/options.json @@ -0,0 +1,3 @@ +{ + "plugins": ["transform-typescript"] +} diff --git a/packages/babel-plugin-proposal-optional-chaining/test/fixtures/regression/10959-transform-ts/output.js b/packages/babel-plugin-proposal-optional-chaining/test/fixtures/regression/10959-transform-ts/output.js new file mode 100644 index 000000000000..b6d13e7877e7 --- /dev/null +++ b/packages/babel-plugin-proposal-optional-chaining/test/fixtures/regression/10959-transform-ts/output.js @@ -0,0 +1,8 @@ +a?.b.c; +a?.b.c.d; +a?.b.c.d; +a.b?.c; +a?.b?.c; +a?.b.c?.c; +(a?.b).c; +(a?.b).c;