diff --git a/src/compiler/transformers/module/system.ts b/src/compiler/transformers/module/system.ts index e68b10ffc51..3077eec4661 100644 --- a/src/compiler/transformers/module/system.ts +++ b/src/compiler/transformers/module/system.ts @@ -675,6 +675,12 @@ namespace ts { const originalNode = getOriginalNode(node); if ((originalNode.kind === SyntaxKind.ModuleDeclaration || originalNode.kind === SyntaxKind.EnumDeclaration) && hasModifier(originalNode, ModifierFlags.Export)) { const name = getDeclarationName(originalNode); + // We only need to hoistVariableDeclaration for EnumDeclaration + // as ModuleDeclaration is already hoisted when the transformer call visitVariableStatement + // which then call transformsVariable for each declaration in declarationList + if (originalNode.kind === SyntaxKind.EnumDeclaration) { + hoistVariableDeclaration(name); + } return [ node, createExportStatement(name, name) diff --git a/tests/baselines/reference/systemModuleDeclarationMerging.js b/tests/baselines/reference/systemModuleDeclarationMerging.js index aff4891da52..d5994bc9f22 100644 --- a/tests/baselines/reference/systemModuleDeclarationMerging.js +++ b/tests/baselines/reference/systemModuleDeclarationMerging.js @@ -14,7 +14,7 @@ System.register([], function (exports_1, context_1) { "use strict"; var __moduleName = context_1 && context_1.id; function F() { } - var F, C, C, E; + var F, C, C, E, E; exports_1("F", F); return { setters: [],