diff --git a/bin/tsc.js b/bin/tsc.js index a6749015571..f8d31c01536 100644 --- a/bin/tsc.js +++ b/bin/tsc.js @@ -1056,6 +1056,7 @@ var ts; Type_argument_candidate_1_is_not_a_valid_type_argument_because_it_is_not_a_supertype_of_candidate_0: { code: 2455, category: 1 /* Error */, key: "Type argument candidate '{1}' is not a valid type argument because it is not a supertype of candidate '{0}'." }, Type_alias_0_circularly_references_itself: { code: 2456, category: 1 /* Error */, key: "Type alias '{0}' circularly references itself." }, Type_alias_name_cannot_be_0: { code: 2457, category: 1 /* Error */, key: "Type alias name cannot be '{0}'" }, + An_AMD_module_cannot_have_multiple_name_assignments: { code: 2458, category: 1 /* Error */, key: "An AMD module cannot have multiple name assignments." }, Import_declaration_0_is_using_private_name_1: { code: 4000, category: 1 /* Error */, key: "Import declaration '{0}' is using private name '{1}'." }, Type_parameter_0_of_exported_class_has_or_is_using_name_1_from_private_module_2: { code: 4001, category: 1 /* Error */, key: "Type parameter '{0}' of exported class has or is using name '{1}' from private module '{2}'." }, Type_parameter_0_of_exported_class_has_or_is_using_private_name_1: { code: 4002, category: 1 /* Error */, key: "Type parameter '{0}' of exported class has or is using private name '{1}'." }, @@ -5542,6 +5543,7 @@ var ts; function processReferenceComments() { var referencedFiles = []; var amdDependencies = []; + var amdModuleName; commentRanges = []; token = scanner.scan(); for (var i = 0; i < commentRanges.length; i++) { @@ -5560,6 +5562,14 @@ var ts; } } else { + var amdModuleNameRegEx = /^\/\/\/\s* { write(", "); emitLiteral(imp.externalModuleName); diff --git a/src/compiler/parser.ts b/src/compiler/parser.ts index f59ecb8a6e3..76d87199581 100644 --- a/src/compiler/parser.ts +++ b/src/compiler/parser.ts @@ -20,6 +20,7 @@ module ts { interface ReferenceComments { referencedFiles: FileReference[]; amdDependencies: string[]; + amdModuleName: string; } export function getSourceFileOfNode(node: Node): SourceFile { @@ -4247,6 +4248,7 @@ module ts { function processReferenceComments(): ReferenceComments { var referencedFiles: FileReference[] = []; var amdDependencies: string[] = []; + var amdModuleName: string; commentRanges = []; token = scanner.scan(); @@ -4266,6 +4268,15 @@ module ts { } } else { + var amdModuleNameRegEx = /^\/\/\/\s* +class Foo { + x: number; + constructor() { + this.x = 5; + } +} +export = Foo; + + +//// [amdModuleName1.js] +define("NamedModule", ["require", "exports"], function (require, exports) { + /// + var Foo = (function () { + function Foo() { + this.x = 5; + } + return Foo; + })(); + return Foo; +}); diff --git a/tests/baselines/reference/amdModuleName1.types b/tests/baselines/reference/amdModuleName1.types new file mode 100644 index 00000000000..02ad9472354 --- /dev/null +++ b/tests/baselines/reference/amdModuleName1.types @@ -0,0 +1,19 @@ +=== tests/cases/compiler/amdModuleName1.ts === +/// +class Foo { +>Foo : Foo + + x: number; +>x : number + + constructor() { + this.x = 5; +>this.x = 5 : number +>this.x : number +>this : Foo +>x : number + } +} +export = Foo; +>Foo : Foo + diff --git a/tests/baselines/reference/amdModuleName2.errors.txt b/tests/baselines/reference/amdModuleName2.errors.txt new file mode 100644 index 00000000000..911f31a1f4b --- /dev/null +++ b/tests/baselines/reference/amdModuleName2.errors.txt @@ -0,0 +1,16 @@ +tests/cases/compiler/amdModuleName2.ts(2,1): error TS2458: An AMD module cannot have multiple name assignments. + + +==== tests/cases/compiler/amdModuleName2.ts (1 errors) ==== + /// + /// + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +!!! error TS2458: An AMD module cannot have multiple name assignments. + class Foo { + x: number; + constructor() { + this.x = 5; + } + } + export = Foo; + \ No newline at end of file diff --git a/tests/cases/compiler/amdModuleName1.ts b/tests/cases/compiler/amdModuleName1.ts new file mode 100644 index 00000000000..fef7956e332 --- /dev/null +++ b/tests/cases/compiler/amdModuleName1.ts @@ -0,0 +1,9 @@ +//@module: amd +/// +class Foo { + x: number; + constructor() { + this.x = 5; + } +} +export = Foo; diff --git a/tests/cases/compiler/amdModuleName2.ts b/tests/cases/compiler/amdModuleName2.ts new file mode 100644 index 00000000000..cca02a22650 --- /dev/null +++ b/tests/cases/compiler/amdModuleName2.ts @@ -0,0 +1,10 @@ +//@module: amd +/// +/// +class Foo { + x: number; + constructor() { + this.x = 5; + } +} +export = Foo;