diff --git a/packages/babel-plugin-proposal-dynamic-import/test/fixtures/systemjs/missing-plugin-babel-7/input.mjs b/packages/babel-plugin-proposal-dynamic-import/test/fixtures/systemjs/missing-plugin-babel-7/input.mjs new file mode 100644 index 0000000000..968ad7d801 --- /dev/null +++ b/packages/babel-plugin-proposal-dynamic-import/test/fixtures/systemjs/missing-plugin-babel-7/input.mjs @@ -0,0 +1,3 @@ +import "a"; + +import("b"); diff --git a/packages/babel-plugin-proposal-dynamic-import/test/fixtures/systemjs/missing-plugin-babel-7/options.json b/packages/babel-plugin-proposal-dynamic-import/test/fixtures/systemjs/missing-plugin-babel-7/options.json new file mode 100644 index 0000000000..1ab6800bf0 --- /dev/null +++ b/packages/babel-plugin-proposal-dynamic-import/test/fixtures/systemjs/missing-plugin-babel-7/options.json @@ -0,0 +1,8 @@ +{ + "validateLogs": true, + "plugins": [ + "transform-modules-systemjs", + "external-helpers" + ], + "BABEL_8_BREAKING": false +} diff --git a/packages/babel-plugin-proposal-dynamic-import/test/fixtures/systemjs/missing-plugin/output.mjs b/packages/babel-plugin-proposal-dynamic-import/test/fixtures/systemjs/missing-plugin-babel-7/output.mjs similarity index 80% rename from packages/babel-plugin-proposal-dynamic-import/test/fixtures/systemjs/missing-plugin/output.mjs rename to packages/babel-plugin-proposal-dynamic-import/test/fixtures/systemjs/missing-plugin-babel-7/output.mjs index c15bc82fb8..03d6d7cdde 100644 --- a/packages/babel-plugin-proposal-dynamic-import/test/fixtures/systemjs/missing-plugin/output.mjs +++ b/packages/babel-plugin-proposal-dynamic-import/test/fixtures/systemjs/missing-plugin-babel-7/output.mjs @@ -4,7 +4,6 @@ System.register(["a"], function (_export, _context) { return { setters: [function (_a) {}], execute: function () { - // TODO: This should throw in Babel 8 _context.import("b"); } }; diff --git a/packages/babel-plugin-proposal-dynamic-import/test/fixtures/systemjs/missing-plugin/stderr.txt b/packages/babel-plugin-proposal-dynamic-import/test/fixtures/systemjs/missing-plugin-babel-7/stderr.txt similarity index 100% rename from packages/babel-plugin-proposal-dynamic-import/test/fixtures/systemjs/missing-plugin/stderr.txt rename to packages/babel-plugin-proposal-dynamic-import/test/fixtures/systemjs/missing-plugin-babel-7/stderr.txt diff --git a/packages/babel-plugin-proposal-dynamic-import/test/fixtures/systemjs/missing-plugin/input.mjs b/packages/babel-plugin-proposal-dynamic-import/test/fixtures/systemjs/missing-plugin/input.mjs index 646314cdde..968ad7d801 100644 --- a/packages/babel-plugin-proposal-dynamic-import/test/fixtures/systemjs/missing-plugin/input.mjs +++ b/packages/babel-plugin-proposal-dynamic-import/test/fixtures/systemjs/missing-plugin/input.mjs @@ -1,5 +1,3 @@ -// TODO: This should throw in Babel 8 - import "a"; import("b"); diff --git a/packages/babel-plugin-proposal-dynamic-import/test/fixtures/systemjs/missing-plugin/options.json b/packages/babel-plugin-proposal-dynamic-import/test/fixtures/systemjs/missing-plugin/options.json index 28922079e5..a32b8cee58 100644 --- a/packages/babel-plugin-proposal-dynamic-import/test/fixtures/systemjs/missing-plugin/options.json +++ b/packages/babel-plugin-proposal-dynamic-import/test/fixtures/systemjs/missing-plugin/options.json @@ -1,7 +1,8 @@ { - "validateLogs": true, "plugins": [ "transform-modules-systemjs", "external-helpers" - ] + ], + "BABEL_8_BREAKING": true, + "throws": "ERROR: Dynamic import() transformation must be enabled using the\n @babel/plugin-proposal-dynamic-import plugin. Babel 8\n no longer transforms import() without using that plugin." } diff --git a/packages/babel-plugin-transform-modules-systemjs/src/index.js b/packages/babel-plugin-transform-modules-systemjs/src/index.js index 5dae63d7b5..4dd75d8146 100644 --- a/packages/babel-plugin-transform-modules-systemjs/src/index.js +++ b/packages/babel-plugin-transform-modules-systemjs/src/index.js @@ -28,6 +28,12 @@ WARNING: Dynamic import() transformation must be enabled using the no longer transform import() without using that plugin. `; +const MISSING_PLUGIN_ERROR = `\ +ERROR: Dynamic import() transformation must be enabled using the + @babel/plugin-proposal-dynamic-import plugin. Babel 8 + no longer transforms import() without using that plugin. +`; + //todo: use getExportSpecifierName in `helper-module-transforms` when this library is refactored to NodePath usage. export function getExportSpecifierName( @@ -226,7 +232,11 @@ export default declare((api, options) => { CallExpression(path, state: PluginState) { if (t.isImport(path.node.callee)) { if (!this.file.has("@babel/plugin-proposal-dynamic-import")) { - console.warn(MISSING_PLUGIN_WARNING); + if (process.env.BABEL_8_BREAKING) { + throw new Error(MISSING_PLUGIN_ERROR); + } else { + console.warn(MISSING_PLUGIN_WARNING); + } } path.replaceWith(