diff --git a/packages/babel-helper-module-transforms/src/rewrite-live-references.js b/packages/babel-helper-module-transforms/src/rewrite-live-references.js index 62c7ddf8d1..e73bb05dad 100644 --- a/packages/babel-helper-module-transforms/src/rewrite-live-references.js +++ b/packages/babel-helper-module-transforms/src/rewrite-live-references.js @@ -202,6 +202,10 @@ const rewriteReferencesVisitor = { } requeueInParent(path); + + // The path could have been replaced with an identifier that would + // otherwise be re-visited, so we skip processing its children. + path.skip(); } }, diff --git a/packages/babel-plugin-transform-modules-commonjs/test/fixtures/regression/lazy-7176/input.js b/packages/babel-plugin-transform-modules-commonjs/test/fixtures/regression/lazy-7176/input.js new file mode 100644 index 0000000000..b6c0b8c947 --- /dev/null +++ b/packages/babel-plugin-transform-modules-commonjs/test/fixtures/regression/lazy-7176/input.js @@ -0,0 +1,5 @@ +import * as mod from "mod"; +import { named } from "mod"; + +named; +mod; diff --git a/packages/babel-plugin-transform-modules-commonjs/test/fixtures/regression/lazy-7176/options.json b/packages/babel-plugin-transform-modules-commonjs/test/fixtures/regression/lazy-7176/options.json new file mode 100644 index 0000000000..4d4cb95420 --- /dev/null +++ b/packages/babel-plugin-transform-modules-commonjs/test/fixtures/regression/lazy-7176/options.json @@ -0,0 +1,6 @@ +{ + "plugins": [ + ["transform-modules-commonjs", {"lazy": true}], + "external-helpers" + ] +} diff --git a/packages/babel-plugin-transform-modules-commonjs/test/fixtures/regression/lazy-7176/output.js b/packages/babel-plugin-transform-modules-commonjs/test/fixtures/regression/lazy-7176/output.js new file mode 100644 index 0000000000..1d580efea9 --- /dev/null +++ b/packages/babel-plugin-transform-modules-commonjs/test/fixtures/regression/lazy-7176/output.js @@ -0,0 +1,14 @@ +"use strict"; + +function mod() { + const data = babelHelpers.interopRequireWildcard(require("mod")); + + mod = function () { + return data; + }; + + return data; +} + +mod().named; +mod();