diff --git a/lib/FlagDependencyExportsPlugin.js b/lib/FlagDependencyExportsPlugin.js index d3eb7d49e3f..c376c1c5309 100644 --- a/lib/FlagDependencyExportsPlugin.js +++ b/lib/FlagDependencyExportsPlugin.js @@ -7,14 +7,11 @@ const Queue = require("./util/Queue"); const addToSet = (a, b) => { - let changed = false; + const size = a.size; for (const item of b) { - if (!a.has(item)) { - a.add(item); - changed = true; - } + a.add(item); } - return changed; + return a.size !== size; }; class FlagDependencyExportsPlugin { @@ -114,11 +111,7 @@ class FlagDependencyExportsPlugin { if (module.buildMeta.providedExports !== true) { moduleWithExports = module.buildMeta && module.buildMeta.exportsType; - moduleProvidedExports = Array.isArray( - module.buildMeta.providedExports - ) - ? new Set(module.buildMeta.providedExports) - : new Set(); + moduleProvidedExports = new Set(); providedExportsAreTemporary = false; processDependenciesBlock(module); module.buildInfo.temporaryProvidedExports = providedExportsAreTemporary; diff --git a/test/hotCases/determinism/issue-10174/deps/a.js b/test/hotCases/determinism/issue-10174/deps/a.js new file mode 100644 index 00000000000..35dccc1ad44 --- /dev/null +++ b/test/hotCases/determinism/issue-10174/deps/a.js @@ -0,0 +1 @@ +export * from './b' diff --git a/test/hotCases/determinism/issue-10174/deps/b.js b/test/hotCases/determinism/issue-10174/deps/b.js new file mode 100644 index 00000000000..064f1ffa07e --- /dev/null +++ b/test/hotCases/determinism/issue-10174/deps/b.js @@ -0,0 +1,5 @@ +export * from './c' + +export function b() { + // this extra export is needed for the issue to reproduce +} diff --git a/test/hotCases/determinism/issue-10174/deps/c.js b/test/hotCases/determinism/issue-10174/deps/c.js new file mode 100644 index 00000000000..585b8413425 --- /dev/null +++ b/test/hotCases/determinism/issue-10174/deps/c.js @@ -0,0 +1,3 @@ +export function c() { + return 42; +} diff --git a/test/hotCases/determinism/issue-10174/hot.js b/test/hotCases/determinism/issue-10174/hot.js new file mode 100644 index 00000000000..4fd27070716 --- /dev/null +++ b/test/hotCases/determinism/issue-10174/hot.js @@ -0,0 +1,3 @@ +export default 1; +--- +export default 2; diff --git a/test/hotCases/determinism/issue-10174/index.js b/test/hotCases/determinism/issue-10174/index.js new file mode 100644 index 00000000000..71a1e60a4c2 --- /dev/null +++ b/test/hotCases/determinism/issue-10174/index.js @@ -0,0 +1,14 @@ +import { c } from "./deps/a"; +import hot from "./hot"; + +it("should only register changes for the changed module", done => { + expect(hot).toBe(1); + expect(c()).toBe(42); + module.hot.accept("./hot", () => { + expect(hot).toBe(2); + expect(c()).toBe(42); + done(); + }); + + NEXT(require("../../update")(done)); +});