diff --git a/src/compiler/emitter.ts b/src/compiler/emitter.ts index b46ca852135..6fca3d897ac 100644 --- a/src/compiler/emitter.ts +++ b/src/compiler/emitter.ts @@ -2481,6 +2481,21 @@ namespace ts { } function emitTripleSlashDirectives(files: ReadonlyArray, types: ReadonlyArray) { + if (currentSourceFile && currentSourceFile.moduleName) { + write(`/// `); + writeLine(); + } + if (currentSourceFile && currentSourceFile.amdDependencies) { + for (const dep of currentSourceFile.amdDependencies) { + if (dep.name) { + write(`/// `); + } + else { + write(`/// `); + } + writeLine(); + } + } for (const directive of files) { write(`/// `); writeLine(); diff --git a/tests/baselines/reference/declarationEmitAmdModuleNameDirective.js b/tests/baselines/reference/declarationEmitAmdModuleNameDirective.js new file mode 100644 index 00000000000..eb7e0db489e --- /dev/null +++ b/tests/baselines/reference/declarationEmitAmdModuleNameDirective.js @@ -0,0 +1,49 @@ +//// [tests/cases/compiler/declarationEmitAmdModuleNameDirective.ts] //// + +//// [foo.ts] +/// +export const foo = 1; +//// [bar.ts] +/// +import {foo} from './foo'; +void foo; + +//// [foo.js] +(function (factory) { + if (typeof module === "object" && typeof module.exports === "object") { + var v = factory(require, exports); + if (v !== undefined) module.exports = v; + } + else if (typeof define === "function" && define.amd) { + define("name_of_foo", ["require", "exports"], factory); + } +})(function (require, exports) { + "use strict"; + exports.__esModule = true; + /// + exports.foo = 1; +}); +//// [bar.js] +(function (factory) { + if (typeof module === "object" && typeof module.exports === "object") { + var v = factory(require, exports); + if (v !== undefined) module.exports = v; + } + else if (typeof define === "function" && define.amd) { + define(["require", "exports", "./foo", "name_of_foo"], factory); + } +})(function (require, exports, name_of_foo) { + "use strict"; + exports.__esModule = true; + /// + var foo_1 = require("name_of_foo"); + void foo_1.foo; +}); + + +//// [foo.d.ts] +/// +export declare const foo = 1; +//// [bar.d.ts] +/// +export {}; diff --git a/tests/baselines/reference/declarationEmitAmdModuleNameDirective.symbols b/tests/baselines/reference/declarationEmitAmdModuleNameDirective.symbols new file mode 100644 index 00000000000..f8100b8d250 --- /dev/null +++ b/tests/baselines/reference/declarationEmitAmdModuleNameDirective.symbols @@ -0,0 +1,13 @@ +=== tests/cases/compiler/foo.ts === +/// +export const foo = 1; +>foo : Symbol(foo, Decl(foo.ts, 1, 12)) + +=== tests/cases/compiler/bar.ts === +/// +import {foo} from './foo'; +>foo : Symbol(foo, Decl(bar.ts, 1, 8)) + +void foo; +>foo : Symbol(foo, Decl(bar.ts, 1, 8)) + diff --git a/tests/baselines/reference/declarationEmitAmdModuleNameDirective.types b/tests/baselines/reference/declarationEmitAmdModuleNameDirective.types new file mode 100644 index 00000000000..e2c710afa6e --- /dev/null +++ b/tests/baselines/reference/declarationEmitAmdModuleNameDirective.types @@ -0,0 +1,15 @@ +=== tests/cases/compiler/foo.ts === +/// +export const foo = 1; +>foo : 1 +>1 : 1 + +=== tests/cases/compiler/bar.ts === +/// +import {foo} from './foo'; +>foo : 1 + +void foo; +>void foo : undefined +>foo : 1 + diff --git a/tests/cases/compiler/declarationEmitAmdModuleNameDirective.ts b/tests/cases/compiler/declarationEmitAmdModuleNameDirective.ts new file mode 100644 index 00000000000..862e05f1726 --- /dev/null +++ b/tests/cases/compiler/declarationEmitAmdModuleNameDirective.ts @@ -0,0 +1,9 @@ +// @declaration: true +// @module: umd +// @filename: foo.ts +/// +export const foo = 1; +// @filename: bar.ts +/// +import {foo} from './foo'; +void foo; \ No newline at end of file