mirror of https://github.com/webpack/webpack.git
Merge pull request #3419 from webpack/bugfix/import-export-order
insert import and exports in order
This commit is contained in:
commit
fbb8920f2e
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
};
|
||||
|
|
|
|||
|
|
@ -0,0 +1,3 @@
|
|||
import { add } from "./tracker";
|
||||
add("a");
|
||||
export var ax = "ax";
|
||||
|
|
@ -0,0 +1,4 @@
|
|||
import { ax } from "./c";
|
||||
import { add } from "./tracker";
|
||||
add("b");
|
||||
export var bx = ax;
|
||||
|
|
@ -0,0 +1,7 @@
|
|||
export * from "./a";
|
||||
export * from "./b";
|
||||
import { bx } from "./b";
|
||||
export { bx as cx }
|
||||
import { add } from "./tracker";
|
||||
add("c");
|
||||
|
||||
|
|
@ -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");
|
||||
});
|
||||
|
|
@ -0,0 +1,4 @@
|
|||
export var list = [];
|
||||
export function add(str) {
|
||||
list.push(str);
|
||||
}
|
||||
Loading…
Reference in New Issue