Skip to content

Commit 8492dfd

Browse files
committed
moved AMD module sorting to emitter, updated test case
1 parent a27a893 commit 8492dfd

3 files changed

Lines changed: 16 additions & 7 deletions

File tree

src/compiler/emitter.ts

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3902,11 +3902,25 @@ module ts {
39023902
}
39033903
});
39043904
}
3905+
3906+
function sortAMDModules(amdModules: {name: string; path: string}[]) {
3907+
// AMD modules with declared variable names goes first
3908+
return amdModules.sort((moduleA, moduleB) => {
3909+
if (moduleA.name == moduleB.name) {
3910+
return 0;
3911+
} else if (moduleA.name == undefined) {
3912+
return 1;
3913+
} else {
3914+
return -1;
3915+
}
3916+
});
3917+
}
39053918

39063919
function emitAMDModule(node: SourceFile, startIndex: number) {
39073920
var imports = getExternalImportDeclarations(node);
39083921
writeLine();
39093922
write("define(");
3923+
sortAMDModules(node.amdDependencies);
39103924
if (node.amdModuleName) {
39113925
write("\"" + node.amdModuleName + "\", ");
39123926
}

src/compiler/parser.ts

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -4719,12 +4719,7 @@ module ts {
47194719
var nameMatchResult = nameRegex.exec(comment);
47204720
if (pathMatchResult) {
47214721
var amdDependency = {path: pathMatchResult[2], name: nameMatchResult ? nameMatchResult[2] : undefined };
4722-
// AMD dependencies with names have to go first in define header
4723-
if (nameMatchResult) {
4724-
amdDependencies.unshift(amdDependency);
4725-
} else {
4726-
amdDependencies.push(amdDependency);
4727-
}
4722+
amdDependencies.push(amdDependency);
47284723
}
47294724
}
47304725
}

tests/baselines/reference/amdDependencyCommentName3.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,6 @@ m1.f();
1010
///<amd-dependency path='bar' name='b'/>
1111
///<amd-dependency path='foo'/>
1212
///<amd-dependency path='goo' name='c'/>
13-
define(["require", "exports", "m2", "goo", "bar", "foo"], function (require, exports, m1, c, b) {
13+
define(["require", "exports", "m2", "bar", "goo", "foo"], function (require, exports, m1, b, c) {
1414
m1.f();
1515
});

0 commit comments

Comments
 (0)