From 8492dfdffd89c00a4d96ce25152b30256e650311 Mon Sep 17 00:00:00 2001 From: togru Date: Tue, 10 Feb 2015 10:28:09 +0100 Subject: [PATCH] moved AMD module sorting to emitter, updated test case --- src/compiler/emitter.ts | 14 ++++++++++++++ src/compiler/parser.ts | 7 +------ .../reference/amdDependencyCommentName3.js | 2 +- 3 files changed, 16 insertions(+), 7 deletions(-) diff --git a/src/compiler/emitter.ts b/src/compiler/emitter.ts index ebd9f3b25cc..08c29ab8dc9 100644 --- a/src/compiler/emitter.ts +++ b/src/compiler/emitter.ts @@ -3902,11 +3902,25 @@ module ts { } }); } + + function sortAMDModules(amdModules: {name: string; path: string}[]) { + // AMD modules with declared variable names goes first + return amdModules.sort((moduleA, moduleB) => { + if (moduleA.name == moduleB.name) { + return 0; + } else if (moduleA.name == undefined) { + return 1; + } else { + return -1; + } + }); + } function emitAMDModule(node: SourceFile, startIndex: number) { var imports = getExternalImportDeclarations(node); writeLine(); write("define("); + sortAMDModules(node.amdDependencies); if (node.amdModuleName) { write("\"" + node.amdModuleName + "\", "); } diff --git a/src/compiler/parser.ts b/src/compiler/parser.ts index 258f7df0b49..5288d6761d3 100644 --- a/src/compiler/parser.ts +++ b/src/compiler/parser.ts @@ -4719,12 +4719,7 @@ module ts { var nameMatchResult = nameRegex.exec(comment); if (pathMatchResult) { var amdDependency = {path: pathMatchResult[2], name: nameMatchResult ? nameMatchResult[2] : undefined }; - // AMD dependencies with names have to go first in define header - if (nameMatchResult) { - amdDependencies.unshift(amdDependency); - } else { - amdDependencies.push(amdDependency); - } + amdDependencies.push(amdDependency); } } } diff --git a/tests/baselines/reference/amdDependencyCommentName3.js b/tests/baselines/reference/amdDependencyCommentName3.js index 2230a357bd7..76e00e1e0cc 100644 --- a/tests/baselines/reference/amdDependencyCommentName3.js +++ b/tests/baselines/reference/amdDependencyCommentName3.js @@ -10,6 +10,6 @@ m1.f(); /// /// /// -define(["require", "exports", "m2", "goo", "bar", "foo"], function (require, exports, m1, c, b) { +define(["require", "exports", "m2", "bar", "goo", "foo"], function (require, exports, m1, b, c) { m1.f(); });