From 346e8124346e6677548188e4f6eb3718d6b2ba4b Mon Sep 17 00:00:00 2001 From: Sneh Khatri Date: Thu, 6 Jan 2022 22:10:44 +0530 Subject: [PATCH 1/2] Fix: properly scope variables in TSModuleBlock MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Nicolò Ribaudo --- .../test/fixtures/linux/within-ts-module-block/output.mjs | 2 +- .../namespace/declare-global-nested-namespace/input.ts | 5 +++++ .../namespace/declare-global-nested-namespace/output.mjs | 7 +++++++ packages/babel-types/src/ast-types/generated/index.ts | 3 ++- packages/babel-types/src/definitions/typescript.ts | 2 +- packages/babel-types/src/validators/generated/index.ts | 3 ++- 6 files changed, 18 insertions(+), 4 deletions(-) create mode 100644 packages/babel-plugin-transform-typescript/test/fixtures/namespace/declare-global-nested-namespace/input.ts create mode 100644 packages/babel-plugin-transform-typescript/test/fixtures/namespace/declare-global-nested-namespace/output.mjs diff --git a/packages/babel-plugin-transform-react-jsx-development/test/fixtures/linux/within-ts-module-block/output.mjs b/packages/babel-plugin-transform-react-jsx-development/test/fixtures/linux/within-ts-module-block/output.mjs index 9090c80cb91c..588cd0847da6 100644 --- a/packages/babel-plugin-transform-react-jsx-development/test/fixtures/linux/within-ts-module-block/output.mjs +++ b/packages/babel-plugin-transform-react-jsx-development/test/fixtures/linux/within-ts-module-block/output.mjs @@ -7,5 +7,5 @@ export namespace Namespaced { fileName: _jsxFileName, lineNumber: 3, columnNumber: 3 - }, void 0); + }, this); } diff --git a/packages/babel-plugin-transform-typescript/test/fixtures/namespace/declare-global-nested-namespace/input.ts b/packages/babel-plugin-transform-typescript/test/fixtures/namespace/declare-global-nested-namespace/input.ts new file mode 100644 index 000000000000..f90524b6f591 --- /dev/null +++ b/packages/babel-plugin-transform-typescript/test/fixtures/namespace/declare-global-nested-namespace/input.ts @@ -0,0 +1,5 @@ +declare global { namespace globalThis { var i18n: any; } } + +namespace X { var i18n: any; } + +export class i18n {} diff --git a/packages/babel-plugin-transform-typescript/test/fixtures/namespace/declare-global-nested-namespace/output.mjs b/packages/babel-plugin-transform-typescript/test/fixtures/namespace/declare-global-nested-namespace/output.mjs new file mode 100644 index 000000000000..aea569d090ec --- /dev/null +++ b/packages/babel-plugin-transform-typescript/test/fixtures/namespace/declare-global-nested-namespace/output.mjs @@ -0,0 +1,7 @@ +let X; + +(function (_X) { + var i18n; +})(X || (X = {})); + +export class i18n {} diff --git a/packages/babel-types/src/ast-types/generated/index.ts b/packages/babel-types/src/ast-types/generated/index.ts index 5b77c64d0714..9975a9536fb9 100644 --- a/packages/babel-types/src/ast-types/generated/index.ts +++ b/packages/babel-types/src/ast-types/generated/index.ts @@ -2336,7 +2336,8 @@ export type FunctionParent = | ArrowFunctionExpression | ClassMethod | ClassPrivateMethod - | StaticBlock; + | StaticBlock + | TSModuleBlock; export type Pureish = | FunctionDeclaration | FunctionExpression diff --git a/packages/babel-types/src/definitions/typescript.ts b/packages/babel-types/src/definitions/typescript.ts index 750e47430d42..98a5d3ba4bf5 100644 --- a/packages/babel-types/src/definitions/typescript.ts +++ b/packages/babel-types/src/definitions/typescript.ts @@ -514,7 +514,7 @@ defineType("TSModuleDeclaration", { }); defineType("TSModuleBlock", { - aliases: ["Scopable", "Block", "BlockParent"], + aliases: ["Scopable", "Block", "BlockParent", "FunctionParent"], visitor: ["body"], fields: { body: validateArrayOfType("Statement"), diff --git a/packages/babel-types/src/validators/generated/index.ts b/packages/babel-types/src/validators/generated/index.ts index f07920696c65..c8eb203b3f6a 100644 --- a/packages/babel-types/src/validators/generated/index.ts +++ b/packages/babel-types/src/validators/generated/index.ts @@ -4788,7 +4788,8 @@ export function isFunctionParent( "ArrowFunctionExpression" === nodeType || "ClassMethod" === nodeType || "ClassPrivateMethod" === nodeType || - "StaticBlock" === nodeType + "StaticBlock" === nodeType || + "TSModuleBlock" === nodeType ) { if (typeof opts === "undefined") { return true; From 6e7edef87516bad7904ad7a7c4ad32eb66cbc778 Mon Sep 17 00:00:00 2001 From: Babel Bot Date: Fri, 7 Oct 2022 12:16:45 +0000 Subject: [PATCH 2/2] Update fixtures (Windows) --- .../test/fixtures/windows/within-ts-module-block/output.mjs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/babel-plugin-transform-react-jsx-development/test/fixtures/windows/within-ts-module-block/output.mjs b/packages/babel-plugin-transform-react-jsx-development/test/fixtures/windows/within-ts-module-block/output.mjs index efb871f367af..f02771d4b5fa 100644 --- a/packages/babel-plugin-transform-react-jsx-development/test/fixtures/windows/within-ts-module-block/output.mjs +++ b/packages/babel-plugin-transform-react-jsx-development/test/fixtures/windows/within-ts-module-block/output.mjs @@ -7,5 +7,5 @@ export namespace Namespaced { fileName: _jsxFileName, lineNumber: 3, columnNumber: 3 - }, void 0); + }, this); }