From de8264c8a712bcd04c0d8ec5352aa9fb3002776f Mon Sep 17 00:00:00 2001 From: Jason Quense Date: Thu, 14 May 2020 10:01:54 -0400 Subject: [PATCH] fix: don't elide jsx pragma import namespaces (#11523) * fix: don't elide jsx pragma import namespaces * use the correct pragma oops --- packages/babel-plugin-transform-typescript/src/index.js | 7 ++++++- .../imports/elide-jsx-pragma-namespace-no/input.ts | 4 ++++ .../imports/elide-jsx-pragma-namespace-no/options.json | 3 +++ .../imports/elide-jsx-pragma-namespace-no/output.mjs | 4 ++++ 4 files changed, 17 insertions(+), 1 deletion(-) create mode 100644 packages/babel-plugin-transform-typescript/test/fixtures/imports/elide-jsx-pragma-namespace-no/input.ts create mode 100644 packages/babel-plugin-transform-typescript/test/fixtures/imports/elide-jsx-pragma-namespace-no/options.json create mode 100644 packages/babel-plugin-transform-typescript/test/fixtures/imports/elide-jsx-pragma-namespace-no/output.mjs diff --git a/packages/babel-plugin-transform-typescript/src/index.js b/packages/babel-plugin-transform-typescript/src/index.js index f53a1e343715..7598836f6a52 100644 --- a/packages/babel-plugin-transform-typescript/src/index.js +++ b/packages/babel-plugin-transform-typescript/src/index.js @@ -169,6 +169,11 @@ export default declare( } } + let pragmaImportName = fileJsxPragma || jsxPragma; + if (pragmaImportName) { + [pragmaImportName] = pragmaImportName.split("."); + } + // remove type imports for (let stmt of path.get("body")) { if (t.isImportDeclaration(stmt)) { @@ -203,7 +208,7 @@ export default declare( isImportTypeOnly({ binding, programPath: path, - jsxPragma: fileJsxPragma || jsxPragma, + jsxPragma: pragmaImportName, }) ) { importsToRemove.push(binding.path); diff --git a/packages/babel-plugin-transform-typescript/test/fixtures/imports/elide-jsx-pragma-namespace-no/input.ts b/packages/babel-plugin-transform-typescript/test/fixtures/imports/elide-jsx-pragma-namespace-no/input.ts new file mode 100644 index 000000000000..9ba83b13ea8c --- /dev/null +++ b/packages/babel-plugin-transform-typescript/test/fixtures/imports/elide-jsx-pragma-namespace-no/input.ts @@ -0,0 +1,4 @@ +/* @jsx jsx.htm */ +// Don't elide htm if a JSX element appears somewhere. +import * as jsx from "fake-jsx-package"; +
; diff --git a/packages/babel-plugin-transform-typescript/test/fixtures/imports/elide-jsx-pragma-namespace-no/options.json b/packages/babel-plugin-transform-typescript/test/fixtures/imports/elide-jsx-pragma-namespace-no/options.json new file mode 100644 index 000000000000..2c7aa7bce294 --- /dev/null +++ b/packages/babel-plugin-transform-typescript/test/fixtures/imports/elide-jsx-pragma-namespace-no/options.json @@ -0,0 +1,3 @@ +{ + "plugins": [["transform-typescript", { "isTSX": true }]] +} diff --git a/packages/babel-plugin-transform-typescript/test/fixtures/imports/elide-jsx-pragma-namespace-no/output.mjs b/packages/babel-plugin-transform-typescript/test/fixtures/imports/elide-jsx-pragma-namespace-no/output.mjs new file mode 100644 index 000000000000..9ba83b13ea8c --- /dev/null +++ b/packages/babel-plugin-transform-typescript/test/fixtures/imports/elide-jsx-pragma-namespace-no/output.mjs @@ -0,0 +1,4 @@ +/* @jsx jsx.htm */ +// Don't elide htm if a JSX element appears somewhere. +import * as jsx from "fake-jsx-package"; +
;