From 42007e882ae66401ea09dcbc27cbafcc3cd3217f Mon Sep 17 00:00:00 2001 From: Tobias Koppers Date: Tue, 22 Jan 2019 09:13:21 +0100 Subject: [PATCH] fixes #8666 --- lib/optimize/ConcatenatedModule.js | 2 +- test/cases/scope-hoisting/esModule/index.js | 6 ++++++ test/cases/scope-hoisting/esModule/module.js | 3 +++ test/cases/scope-hoisting/esModule/other.js | 1 + test/configCases/scope-hoisting/esModule/index.js | 6 ++++++ test/configCases/scope-hoisting/esModule/module.js | 3 +++ test/configCases/scope-hoisting/esModule/other.js | 1 + test/configCases/scope-hoisting/esModule/webpack.config.js | 7 +++++++ 8 files changed, 28 insertions(+), 1 deletion(-) create mode 100644 test/cases/scope-hoisting/esModule/index.js create mode 100644 test/cases/scope-hoisting/esModule/module.js create mode 100644 test/cases/scope-hoisting/esModule/other.js create mode 100644 test/configCases/scope-hoisting/esModule/index.js create mode 100644 test/configCases/scope-hoisting/esModule/module.js create mode 100644 test/configCases/scope-hoisting/esModule/other.js create mode 100644 test/configCases/scope-hoisting/esModule/webpack.config.js diff --git a/lib/optimize/ConcatenatedModule.js b/lib/optimize/ConcatenatedModule.js index aa244a2f550..f5ae70cd872 100644 --- a/lib/optimize/ConcatenatedModule.js +++ b/lib/optimize/ConcatenatedModule.js @@ -1096,7 +1096,7 @@ class ConcatenatedModule extends Module { // add harmony compatibility flag (must be first because of possible circular dependencies) const usedExports = this.rootModule.usedExports; - if (usedExports === true) { + if (usedExports === true || usedExports === null) { result.add( runtimeTemplate.defineEsModuleFlagStatement({ exportsArgument: this.exportsArgument diff --git a/test/cases/scope-hoisting/esModule/index.js b/test/cases/scope-hoisting/esModule/index.js new file mode 100644 index 00000000000..769d4eeba44 --- /dev/null +++ b/test/cases/scope-hoisting/esModule/index.js @@ -0,0 +1,6 @@ +it("should have the __esModule flag", () => { + return import("./module").then(mod => { + expect(mod.__esModule).toBe(true); + expect(mod.default).toBe(84); + }) +}) diff --git a/test/cases/scope-hoisting/esModule/module.js b/test/cases/scope-hoisting/esModule/module.js new file mode 100644 index 00000000000..a6fa9eb3dd6 --- /dev/null +++ b/test/cases/scope-hoisting/esModule/module.js @@ -0,0 +1,3 @@ +import other from "./other"; + +export default other * 2; diff --git a/test/cases/scope-hoisting/esModule/other.js b/test/cases/scope-hoisting/esModule/other.js new file mode 100644 index 00000000000..7a4e8a723a4 --- /dev/null +++ b/test/cases/scope-hoisting/esModule/other.js @@ -0,0 +1 @@ +export default 42; diff --git a/test/configCases/scope-hoisting/esModule/index.js b/test/configCases/scope-hoisting/esModule/index.js new file mode 100644 index 00000000000..769d4eeba44 --- /dev/null +++ b/test/configCases/scope-hoisting/esModule/index.js @@ -0,0 +1,6 @@ +it("should have the __esModule flag", () => { + return import("./module").then(mod => { + expect(mod.__esModule).toBe(true); + expect(mod.default).toBe(84); + }) +}) diff --git a/test/configCases/scope-hoisting/esModule/module.js b/test/configCases/scope-hoisting/esModule/module.js new file mode 100644 index 00000000000..a6fa9eb3dd6 --- /dev/null +++ b/test/configCases/scope-hoisting/esModule/module.js @@ -0,0 +1,3 @@ +import other from "./other"; + +export default other * 2; diff --git a/test/configCases/scope-hoisting/esModule/other.js b/test/configCases/scope-hoisting/esModule/other.js new file mode 100644 index 00000000000..7a4e8a723a4 --- /dev/null +++ b/test/configCases/scope-hoisting/esModule/other.js @@ -0,0 +1 @@ +export default 42; diff --git a/test/configCases/scope-hoisting/esModule/webpack.config.js b/test/configCases/scope-hoisting/esModule/webpack.config.js new file mode 100644 index 00000000000..b5fcc43ed62 --- /dev/null +++ b/test/configCases/scope-hoisting/esModule/webpack.config.js @@ -0,0 +1,7 @@ +module.exports = { + mode: "development", + devtool: false, + optimization: { + concatenateModules: true + } +};