Skip to content

Commit fb8afe7

Browse files
authored
Merge pull request webpack#5623 from webpack/bugfix/concat-require-root
handle inner non-harmony dependencies correctly in ConcatenatedModule
2 parents 1b85726 + af470a5 commit fb8afe7

5 files changed

Lines changed: 19 additions & 3 deletions

File tree

lib/optimize/ConcatenatedModule.js

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -172,7 +172,7 @@ class ConcatenatedModule extends Module {
172172
this.built = modules.some(m => m.built);
173173
this.cacheable = modules.every(m => m.cacheable);
174174
const modulesSet = new Set(modules);
175-
this.reasons = rootModule.reasons.filter(reason => !modulesSet.has(reason.module));
175+
this.reasons = rootModule.reasons.filter(reason => !(reason.dependency instanceof HarmonyImportDependency) || !modulesSet.has(reason.module));
176176
this.meta = rootModule.meta;
177177
this.moduleArgument = rootModule.moduleArgument;
178178
this.exportsArgument = rootModule.exportsArgument;
@@ -193,7 +193,7 @@ class ConcatenatedModule extends Module {
193193
const m = info.module;
194194

195195
// populate dependencies
196-
m.dependencies.filter(dep => !modulesSet.has(dep.module))
196+
m.dependencies.filter(dep => !(dep instanceof HarmonyImportDependency) || !modulesSet.has(dep.module))
197197
.forEach(d => this.dependencies.push(d));
198198
// populate dep warning
199199
m.dependenciesWarnings.forEach(depWarning => this.dependenciesWarnings.push(depWarning));
@@ -450,7 +450,7 @@ class ConcatenatedModule extends Module {
450450
const allUsedNames = new Set([
451451
"__WEBPACK_MODULE_DEFAULT_EXPORT__", // avoid using this internal name
452452

453-
"abstract", "arguments", "await", "boolean", "break", "byte", "case", "catch", "char", "class",
453+
"abstract", "arguments", "async", "await", "boolean", "break", "byte", "case", "catch", "char", "class",
454454
"const", "continue", "debugger", "default", "delete", "do", "double", "else", "enum", "eval",
455455
"export", "extends", "false", "final", "finally", "float", "for", "function", "goto", "if",
456456
"implements", "import", "in", "instanceof", "int", "interface", "let", "long", "native", "new",
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
export default "default";
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
import value from "./async";
2+
3+
it("should have the correct values", function() {
4+
value.should.be.eql("default");
5+
});
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
import value, { self as moduleSelf } from "./module";
2+
export var self = require("./");
3+
4+
it("should have the correct values", function() {
5+
value.should.be.eql("default");
6+
moduleSelf.should.be.eql(self);
7+
self.self.should.be.eql(self);
8+
});
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
export default "default";
2+
export var self = require("./");

0 commit comments

Comments
 (0)