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