Merge pull request #3419 from webpack/bugfix/import-export-order

insert import and exports in order
This commit is contained in:
Tobias Koppers 2016-12-05 00:34:10 +01:00 committed by GitHub
commit fbb8920f2e
7 changed files with 32 additions and 5 deletions

View File

@ -41,7 +41,7 @@ module.exports = AbstractPlugin.create({
var dep;
if(rename === "imported var") {
var settings = this.state.harmonySpecifier["$" + id];
dep = new HarmonyExportImportedSpecifierDependency(this.state.module, settings[0], settings[1], settings[2], name, statement.range[1]);
dep = new HarmonyExportImportedSpecifierDependency(this.state.module, settings[0], settings[1], settings[2], name);
} else {
var immutable = statement.declaration && isImmutableStatement(statement.declaration);
var hoisted = statement.declaration && isHoistedStatement(statement.declaration);
@ -52,7 +52,7 @@ module.exports = AbstractPlugin.create({
return true;
},
"export import specifier": function(statement, source, id, name) {
var dep = new HarmonyExportImportedSpecifierDependency(this.state.module, this.state.lastHarmoryImport, HarmonyModulesHelpers.getModuleVar(this.state, source), id, name, 0);
var dep = new HarmonyExportImportedSpecifierDependency(this.state.module, this.state.lastHarmoryImport, HarmonyModulesHelpers.getModuleVar(this.state, source), id, name);
dep.loc = statement.loc;
this.state.current.addDependency(dep);
return true;

View File

@ -5,14 +5,13 @@
var NullDependency = require("./NullDependency");
var HarmonyModulesHelpers = require("./HarmonyModulesHelpers");
function HarmonyExportImportedSpecifierDependency(originModule, importDependency, importedVar, id, name, position) {
function HarmonyExportImportedSpecifierDependency(originModule, importDependency, importedVar, id, name) {
NullDependency.call(this);
this.originModule = originModule;
this.importDependency = importDependency;
this.importedVar = importedVar;
this.id = id;
this.name = name;
this.position = position;
}
module.exports = HarmonyExportImportedSpecifierDependency;
@ -199,5 +198,5 @@ HarmonyExportImportedSpecifierDependency.Template.prototype.apply = function(dep
} else {
content = "/* unused harmony reexport namespace */\n";
}
source.insert(dep.position, content);
source.insert(-1, content);
};

View File

@ -0,0 +1,3 @@
import { add } from "./tracker";
add("a");
export var ax = "ax";

View File

@ -0,0 +1,4 @@
import { ax } from "./c";
import { add } from "./tracker";
add("b");
export var bx = ax;

View File

@ -0,0 +1,7 @@
export * from "./a";
export * from "./b";
import { bx } from "./b";
export { bx as cx }
import { add } from "./tracker";
add("c");

View File

@ -0,0 +1,10 @@
it("should process imports of star exports in the correct order", function() {
var tracker = require("./tracker");
tracker.list.length = 0;
delete require.cache[require.resolve("./c")];
var c = require("./c");
tracker.list.should.be.eql(["a", "b", "c"]);
c.ax.should.be.eql("ax");
c.bx.should.be.eql("ax");
c.cx.should.be.eql("ax");
});

View File

@ -0,0 +1,4 @@
export var list = [];
export function add(str) {
list.push(str);
}