diff --git a/src/compiler/transformers/module/module.ts b/src/compiler/transformers/module/module.ts index 493f5a43a1f7a..08c1fccfe16d5 100644 --- a/src/compiler/transformers/module/module.ts +++ b/src/compiler/transformers/module/module.ts @@ -200,6 +200,7 @@ namespace ts { */ function transformUMDModule(node: SourceFile) { const { aliasedModuleNames, unaliasedModuleNames, importAliasNames } = collectAsynchronousDependencies(node, /*includeNonAmdDependencies*/ false); + const moduleName = tryGetModuleNameFromFile(node, host, compilerOptions); const umdHeader = createFunctionExpression( /*modifiers*/ undefined, /*asteriskToken*/ undefined, @@ -260,6 +261,8 @@ namespace ts { createIdentifier("define"), /*typeArguments*/ undefined, [ + // Add the module name (if provided). + ...(moduleName ? [moduleName] : []), createArrayLiteral([ createLiteral("require"), createLiteral("exports"), diff --git a/tests/baselines/reference/umdNamedAmdMode.js b/tests/baselines/reference/umdNamedAmdMode.js new file mode 100644 index 0000000000000..eff0384b575c2 --- /dev/null +++ b/tests/baselines/reference/umdNamedAmdMode.js @@ -0,0 +1,19 @@ +//// [main.ts] +/// +export const a = 1; + +//// [main.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("a", ["require", "exports"], factory); + } +})(function (require, exports) { + "use strict"; + exports.__esModule = true; + /// + exports.a = 1; +}); diff --git a/tests/baselines/reference/umdNamedAmdMode.symbols b/tests/baselines/reference/umdNamedAmdMode.symbols new file mode 100644 index 0000000000000..73ad766e50bfa --- /dev/null +++ b/tests/baselines/reference/umdNamedAmdMode.symbols @@ -0,0 +1,5 @@ +=== tests/cases/compiler/main.ts === +/// +export const a = 1; +>a : Symbol(a, Decl(main.ts, 1, 12)) + diff --git a/tests/baselines/reference/umdNamedAmdMode.types b/tests/baselines/reference/umdNamedAmdMode.types new file mode 100644 index 0000000000000..f8f2d131fc2bc --- /dev/null +++ b/tests/baselines/reference/umdNamedAmdMode.types @@ -0,0 +1,6 @@ +=== tests/cases/compiler/main.ts === +/// +export const a = 1; +>a : 1 +>1 : 1 + diff --git a/tests/cases/compiler/umdNamedAmdMode.ts b/tests/cases/compiler/umdNamedAmdMode.ts new file mode 100644 index 0000000000000..d18e142744355 --- /dev/null +++ b/tests/cases/compiler/umdNamedAmdMode.ts @@ -0,0 +1,4 @@ +// @module: umd +// @filename: main.ts +/// +export const a = 1; \ No newline at end of file