From ec5731ff0d12ab013cb1036e198b14eea8221dea Mon Sep 17 00:00:00 2001 From: Thiago Arrais Date: Wed, 11 Sep 2019 13:49:38 -0300 Subject: [PATCH] a first try --- packages/babel-polyfill-provider-corejs3/src/index.js | 9 +++++++++ .../fixtures/usage-pure/modules-namespaced/input.mjs | 2 ++ .../usage-pure/modules-namespaced/options.json | 11 +++++++++++ .../fixtures/usage-pure/modules-namespaced/output.mjs | 2 ++ 4 files changed, 24 insertions(+) create mode 100644 packages/babel-polyfill-provider-corejs3/test/fixtures/usage-pure/modules-namespaced/input.mjs create mode 100644 packages/babel-polyfill-provider-corejs3/test/fixtures/usage-pure/modules-namespaced/options.json create mode 100644 packages/babel-polyfill-provider-corejs3/test/fixtures/usage-pure/modules-namespaced/output.mjs diff --git a/packages/babel-polyfill-provider-corejs3/src/index.js b/packages/babel-polyfill-provider-corejs3/src/index.js index 6c3a76df..1162743d 100644 --- a/packages/babel-polyfill-provider-corejs3/src/index.js +++ b/packages/babel-polyfill-provider-corejs3/src/index.js @@ -124,6 +124,15 @@ export default (( }, usagePure(meta, utils, path) { + const isNamespaced = path => { + if (!path.node) return false; + const binding = path.scope.getBinding(path.node.name); + if (!binding) return false; + return binding.path.isImportNamespaceSpecifier(); + }; + + if (isNamespaced(path.get("object"))) return false; + if (meta.kind === "in") { if (meta.key === "Symbol.iterator") { path.replaceWith( diff --git a/packages/babel-polyfill-provider-corejs3/test/fixtures/usage-pure/modules-namespaced/input.mjs b/packages/babel-polyfill-provider-corejs3/test/fixtures/usage-pure/modules-namespaced/input.mjs new file mode 100644 index 00000000..7962c3d2 --- /dev/null +++ b/packages/babel-polyfill-provider-corejs3/test/fixtures/usage-pure/modules-namespaced/input.mjs @@ -0,0 +1,2 @@ +import * as bar from "bar"; +bar.map(); diff --git a/packages/babel-polyfill-provider-corejs3/test/fixtures/usage-pure/modules-namespaced/options.json b/packages/babel-polyfill-provider-corejs3/test/fixtures/usage-pure/modules-namespaced/options.json new file mode 100644 index 00000000..a00d7e0c --- /dev/null +++ b/packages/babel-polyfill-provider-corejs3/test/fixtures/usage-pure/modules-namespaced/options.json @@ -0,0 +1,11 @@ +{ + "plugins": [ + [ + "@babel/plugin-inject-polyfills", + { + "method": "usage-pure", + "providers": ["@@/corejs3"] + } + ] + ] +} \ No newline at end of file diff --git a/packages/babel-polyfill-provider-corejs3/test/fixtures/usage-pure/modules-namespaced/output.mjs b/packages/babel-polyfill-provider-corejs3/test/fixtures/usage-pure/modules-namespaced/output.mjs new file mode 100644 index 00000000..7962c3d2 --- /dev/null +++ b/packages/babel-polyfill-provider-corejs3/test/fixtures/usage-pure/modules-namespaced/output.mjs @@ -0,0 +1,2 @@ +import * as bar from "bar"; +bar.map();