diff --git a/packages/babel-plugin-transform-block-scoping/test/fixtures/tdz/exported-fn/input.mjs b/packages/babel-plugin-transform-block-scoping/test/fixtures/tdz/exported-fn/input.mjs new file mode 100644 index 000000000000..ce79efd8d1e2 --- /dev/null +++ b/packages/babel-plugin-transform-block-scoping/test/fixtures/tdz/exported-fn/input.mjs @@ -0,0 +1,14 @@ +import { foo } from "somewhere"; + +// foo might call "bar" +foo(); + +a; + +let a; + +a; + +export function bar() { + return a; +} diff --git a/packages/babel-plugin-transform-block-scoping/test/fixtures/tdz/exported-fn/output.mjs b/packages/babel-plugin-transform-block-scoping/test/fixtures/tdz/exported-fn/output.mjs new file mode 100644 index 000000000000..b7679ea67438 --- /dev/null +++ b/packages/babel-plugin-transform-block-scoping/test/fixtures/tdz/exported-fn/output.mjs @@ -0,0 +1,10 @@ +var a = babelHelpers.temporalUndefined; +import { foo } from "somewhere"; // foo might call "bar" + +foo(); +babelHelpers.tdz("a"); +a = void 0; +a; +export function bar() { + return babelHelpers.temporalRef(a, "a"); +} diff --git a/packages/babel-plugin-transform-spread/test/fixtures/regression/10416/input.mjs b/packages/babel-plugin-transform-spread/test/fixtures/regression/10416/input.mjs new file mode 100644 index 000000000000..9aed42e1cc6c --- /dev/null +++ b/packages/babel-plugin-transform-spread/test/fixtures/regression/10416/input.mjs @@ -0,0 +1,6 @@ +const E_ARR = []; + +export default function () { + const someVar = E_ARR; + return [...someVar]; +} \ No newline at end of file diff --git a/packages/babel-plugin-transform-spread/test/fixtures/regression/10416/output.mjs b/packages/babel-plugin-transform-spread/test/fixtures/regression/10416/output.mjs new file mode 100644 index 000000000000..9593cc5ad0ba --- /dev/null +++ b/packages/babel-plugin-transform-spread/test/fixtures/regression/10416/output.mjs @@ -0,0 +1,5 @@ +const E_ARR = []; +export default function () { + const someVar = E_ARR; + return babelHelpers.toConsumableArray(someVar); +} diff --git a/packages/babel-traverse/src/path/introspection.js b/packages/babel-traverse/src/path/introspection.js index 5089b0a1d461..b660cf666e94 100644 --- a/packages/babel-traverse/src/path/introspection.js +++ b/packages/babel-traverse/src/path/introspection.js @@ -370,7 +370,12 @@ const executionOrderCheckedNodes = new WeakSet(); export function _guessExecutionStatusRelativeToDifferentFunctions( target: NodePath, ): RelativeExecutionStatus { - if (!target.isFunctionDeclaration()) return "unknown"; + if ( + !target.isFunctionDeclaration() || + target.parentPath.isExportDeclaration() + ) { + return "unknown"; + } // so we're in a completely different function, if this is a function declaration // then we can be a bit smarter and handle cases where the function is either