From e7aba18ed502f18318905036c2525f590b38ce25 Mon Sep 17 00:00:00 2001 From: Tobias Koppers Date: Mon, 26 Feb 2018 20:22:58 +0100 Subject: [PATCH] fix incorrect optimization bailout messages fixes #6570 --- lib/optimize/ModuleConcatenationPlugin.js | 15 ++++------- .../scope-hoisting-bailouts/concatenated.js | 1 + .../scope-hoisting-bailouts/concatenated1.js | 1 + .../scope-hoisting-bailouts/concatenated2.js | 2 ++ .../scope-hoisting-bailouts/expected.txt | 26 ++++++++++++------- .../scope-hoisting-bailouts/index.js | 1 + .../scope-hoisting-bailouts/webpack.config.js | 1 + 7 files changed, 28 insertions(+), 19 deletions(-) create mode 100644 test/statsCases/scope-hoisting-bailouts/concatenated.js create mode 100644 test/statsCases/scope-hoisting-bailouts/concatenated1.js create mode 100644 test/statsCases/scope-hoisting-bailouts/concatenated2.js diff --git a/lib/optimize/ModuleConcatenationPlugin.js b/lib/optimize/ModuleConcatenationPlugin.js index 4b9f5e3d87f..c591c0980c2 100644 --- a/lib/optimize/ModuleConcatenationPlugin.js +++ b/lib/optimize/ModuleConcatenationPlugin.js @@ -375,21 +375,16 @@ class ModuleConcatenationPlugin { } } + // Commit experimental changes + config.set(testConfig); + // Eagerly try to add imports too if possible for (const imp of this.getImports(module)) { - const problem = this.tryToAdd( - testConfig, - imp, - possibleModules, - failureCache - ); + const problem = this.tryToAdd(config, imp, possibleModules, failureCache); if (problem) { - config.addWarning(module, problem); + config.addWarning(imp, problem); } } - - // Commit experimental changes - config.set(testConfig); return null; } } diff --git a/test/statsCases/scope-hoisting-bailouts/concatenated.js b/test/statsCases/scope-hoisting-bailouts/concatenated.js new file mode 100644 index 00000000000..1b372f8c0a2 --- /dev/null +++ b/test/statsCases/scope-hoisting-bailouts/concatenated.js @@ -0,0 +1 @@ +import "./concatenated1"; diff --git a/test/statsCases/scope-hoisting-bailouts/concatenated1.js b/test/statsCases/scope-hoisting-bailouts/concatenated1.js new file mode 100644 index 00000000000..c5e494f12c0 --- /dev/null +++ b/test/statsCases/scope-hoisting-bailouts/concatenated1.js @@ -0,0 +1 @@ +import { x } from "./concatenated2"; diff --git a/test/statsCases/scope-hoisting-bailouts/concatenated2.js b/test/statsCases/scope-hoisting-bailouts/concatenated2.js new file mode 100644 index 00000000000..eb580d9469a --- /dev/null +++ b/test/statsCases/scope-hoisting-bailouts/concatenated2.js @@ -0,0 +1,2 @@ +import { y } from "external"; +export var x = y; diff --git a/test/statsCases/scope-hoisting-bailouts/expected.txt b/test/statsCases/scope-hoisting-bailouts/expected.txt index 9a72912122f..f61b7e1bb0a 100644 --- a/test/statsCases/scope-hoisting-bailouts/expected.txt +++ b/test/statsCases/scope-hoisting-bailouts/expected.txt @@ -1,21 +1,29 @@ -Hash: 2f9dacd48c09c3072b04 +Hash: 123228577e0595ae0a8e Time: Xms Built at: Thu Jan 01 1970 00:00:00 GMT Entrypoint index = index.js Entrypoint entry = entry.js - [0] ./entry.js 32 bytes {0} {1} [built] + [0] ./entry.js 32 bytes {1} {2} [built] ModuleConcatenation bailout: Module is an entry point - [1] ./ref-from-cjs.js 45 bytes {0} [built] + [1] ./ref-from-cjs.js 45 bytes {1} [built] ModuleConcatenation bailout: Module is referenced from these modules with unsupported syntax: ./cjs.js (referenced with cjs require) - [2] ./index.js 150 bytes {0} [built] + [2] external "external" 42 bytes {1} [built] + ModuleConcatenation bailout: Module is not an ECMAScript module + [3] ./concatenated.js + 2 modules 116 bytes {0} [built] + ModuleConcatenation bailout: Cannot concat with external "external" (<- Module is not an ECMAScript module) + | ./concatenated.js 26 bytes [built] + | ModuleConcatenation bailout: Module is referenced from these modules with unsupported syntax: ./index.js (referenced with import()) + | ./concatenated1.js 37 bytes [built] + | ./concatenated2.js 48 bytes [built] + [4] ./index.js 176 bytes {1} [built] ModuleConcatenation bailout: Module is an entry point - [3] ./cjs.js 59 bytes {0} [built] + [5] ./cjs.js 59 bytes {1} [built] ModuleConcatenation bailout: Module is not an ECMAScript module - [4] ./eval.js 35 bytes {0} [built] + [6] ./eval.js 35 bytes {1} [built] ModuleConcatenation bailout: Module uses eval() - [5] ./injected-vars.js 40 bytes {0} [built] + [7] ./injected-vars.js 40 bytes {1} [built] ModuleConcatenation bailout: Module uses injected variables (__dirname, __filename) - [6] ./module-id.js 26 bytes {0} [built] + [8] ./module-id.js 26 bytes {1} [built] ModuleConcatenation bailout: Module uses module.id - [7] ./module-loaded.js 30 bytes {0} [built] + [9] ./module-loaded.js 30 bytes {1} [built] ModuleConcatenation bailout: Module uses module.loaded \ No newline at end of file diff --git a/test/statsCases/scope-hoisting-bailouts/index.js b/test/statsCases/scope-hoisting-bailouts/index.js index 26d1840f9d1..4b47535dfa4 100644 --- a/test/statsCases/scope-hoisting-bailouts/index.js +++ b/test/statsCases/scope-hoisting-bailouts/index.js @@ -5,3 +5,4 @@ import "./injected-vars"; import "./module-id"; import "./module-loaded"; import "./ref-from-cjs"; +import("./concatenated"); diff --git a/test/statsCases/scope-hoisting-bailouts/webpack.config.js b/test/statsCases/scope-hoisting-bailouts/webpack.config.js index 12885b3a69b..217a56fcc80 100644 --- a/test/statsCases/scope-hoisting-bailouts/webpack.config.js +++ b/test/statsCases/scope-hoisting-bailouts/webpack.config.js @@ -8,6 +8,7 @@ module.exports = { output: { filename: "[name].js" }, + externals: ["external"], stats: { assets: false, optimizationBailout: true