handle inner non-harmony dependencies correctly in ConcatenatedModule

add async as keyword

fixes #5604
fixes #5615
This commit is contained in:
Tobias Koppers 2017-09-04 14:09:55 +02:00
parent 616ce45a56
commit af470a504e
5 changed files with 19 additions and 3 deletions

View File

@ -172,7 +172,7 @@ class ConcatenatedModule extends Module {
this.built = modules.some(m => m.built);
this.cacheable = modules.every(m => m.cacheable);
const modulesSet = new Set(modules);
this.reasons = rootModule.reasons.filter(reason => !modulesSet.has(reason.module));
this.reasons = rootModule.reasons.filter(reason => !(reason.dependency instanceof HarmonyImportDependency) || !modulesSet.has(reason.module));
this.meta = rootModule.meta;
this.moduleArgument = rootModule.moduleArgument;
this.exportsArgument = rootModule.exportsArgument;
@ -193,7 +193,7 @@ class ConcatenatedModule extends Module {
const m = info.module;
// populate dependencies
m.dependencies.filter(dep => !modulesSet.has(dep.module))
m.dependencies.filter(dep => !(dep instanceof HarmonyImportDependency) || !modulesSet.has(dep.module))
.forEach(d => this.dependencies.push(d));
// populate dep warning
m.dependenciesWarnings.forEach(depWarning => this.dependenciesWarnings.push(depWarning));
@ -450,7 +450,7 @@ class ConcatenatedModule extends Module {
const allUsedNames = new Set([
"__WEBPACK_MODULE_DEFAULT_EXPORT__", // avoid using this internal name
"abstract", "arguments", "await", "boolean", "break", "byte", "case", "catch", "char", "class",
"abstract", "arguments", "async", "await", "boolean", "break", "byte", "case", "catch", "char", "class",
"const", "continue", "debugger", "default", "delete", "do", "double", "else", "enum", "eval",
"export", "extends", "false", "final", "finally", "float", "for", "function", "goto", "if",
"implements", "import", "in", "instanceof", "int", "interface", "let", "long", "native", "new",

View File

@ -0,0 +1 @@
export default "default";

View File

@ -0,0 +1,5 @@
import value from "./async";
it("should have the correct values", function() {
value.should.be.eql("default");
});

View File

@ -0,0 +1,8 @@
import value, { self as moduleSelf } from "./module";
export var self = require("./");
it("should have the correct values", function() {
value.should.be.eql("default");
moduleSelf.should.be.eql(self);
self.self.should.be.eql(self);
});

View File

@ -0,0 +1,2 @@
export default "default";
export var self = require("./");