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; | 		var dep; | ||||||
| 		if(rename === "imported var") { | 		if(rename === "imported var") { | ||||||
| 			var settings = this.state.harmonySpecifier["$" + id]; | 			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 { | 		} else { | ||||||
| 			var immutable = statement.declaration && isImmutableStatement(statement.declaration); | 			var immutable = statement.declaration && isImmutableStatement(statement.declaration); | ||||||
| 			var hoisted = statement.declaration && isHoistedStatement(statement.declaration); | 			var hoisted = statement.declaration && isHoistedStatement(statement.declaration); | ||||||
|  | @ -52,7 +52,7 @@ module.exports = AbstractPlugin.create({ | ||||||
| 		return true; | 		return true; | ||||||
| 	}, | 	}, | ||||||
| 	"export import specifier": function(statement, source, id, name) { | 	"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; | 		dep.loc = statement.loc; | ||||||
| 		this.state.current.addDependency(dep); | 		this.state.current.addDependency(dep); | ||||||
| 		return true; | 		return true; | ||||||
|  |  | ||||||
|  | @ -5,14 +5,13 @@ | ||||||
| var NullDependency = require("./NullDependency"); | var NullDependency = require("./NullDependency"); | ||||||
| var HarmonyModulesHelpers = require("./HarmonyModulesHelpers"); | var HarmonyModulesHelpers = require("./HarmonyModulesHelpers"); | ||||||
| 
 | 
 | ||||||
| function HarmonyExportImportedSpecifierDependency(originModule, importDependency, importedVar, id, name, position) { | function HarmonyExportImportedSpecifierDependency(originModule, importDependency, importedVar, id, name) { | ||||||
| 	NullDependency.call(this); | 	NullDependency.call(this); | ||||||
| 	this.originModule = originModule; | 	this.originModule = originModule; | ||||||
| 	this.importDependency = importDependency; | 	this.importDependency = importDependency; | ||||||
| 	this.importedVar = importedVar; | 	this.importedVar = importedVar; | ||||||
| 	this.id = id; | 	this.id = id; | ||||||
| 	this.name = name; | 	this.name = name; | ||||||
| 	this.position = position; |  | ||||||
| } | } | ||||||
| module.exports = HarmonyExportImportedSpecifierDependency; | module.exports = HarmonyExportImportedSpecifierDependency; | ||||||
| 
 | 
 | ||||||
|  | @ -199,5 +198,5 @@ HarmonyExportImportedSpecifierDependency.Template.prototype.apply = function(dep | ||||||
| 	} else { | 	} else { | ||||||
| 		content = "/* unused harmony reexport namespace */\n"; | 		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