@@ -40,8 +40,8 @@ namespace ts {
4040 context . enableSubstitution ( SyntaxKind . ShorthandPropertyAssignment ) ; // Substitutes shorthand property assignments for imported/exported symbols.
4141 context . enableEmitNotification ( SyntaxKind . SourceFile ) ; // Restore state when substituting nodes in a file.
4242
43- const moduleInfoMap : ExternalModuleInfo [ ] = [ ] ; // The ExternalModuleInfo for each file.
44- const deferredExports : ( Statement [ ] | undefined ) [ ] = [ ] ; // Exports to defer until an EndOfDeclarationMarker is found.
43+ const moduleInfoMap = new Map < Node , ExternalModuleInfo > ( ) ; // The ExternalModuleInfo for each file.
44+ const deferredExports = new Map < Node , Statement [ ] | undefined > ( ) ; ; // Exports to defer until an EndOfDeclarationMarker is found.
4545
4646 let currentSourceFile : SourceFile ; // The current file.
4747 let currentModuleInfo : ExternalModuleInfo ; // The ExternalModuleInfo for the current file.
@@ -65,7 +65,7 @@ namespace ts {
6565
6666 currentSourceFile = node ;
6767 currentModuleInfo = collectExternalModuleInfo ( context , node , resolver , compilerOptions ) ;
68- moduleInfoMap [ getOriginalNodeId ( node ) ] = currentModuleInfo ;
68+ moduleInfoMap . set ( getOriginalNode ( node ) , currentModuleInfo ) ;
6969
7070 // Perform the transformation.
7171 const transformModule = getTransformModuleDelegate ( moduleKind ) ;
@@ -981,8 +981,8 @@ namespace ts {
981981
982982 if ( hasAssociatedEndOfDeclarationMarker ( node ) ) {
983983 // Defer exports until we encounter an EndOfDeclarationMarker node
984- const id = getOriginalNodeId ( node ) ;
985- deferredExports [ id ] = appendExportsOfImportDeclaration ( deferredExports [ id ] , node ) ;
984+ const originalNode = getOriginalNode ( node ) ;
985+ deferredExports . set ( node , appendExportsOfImportDeclaration ( deferredExports . get ( originalNode ) , node ) ) ;
986986 }
987987 else {
988988 statements = appendExportsOfImportDeclaration ( statements , node ) ;
@@ -1072,8 +1072,8 @@ namespace ts {
10721072
10731073 if ( hasAssociatedEndOfDeclarationMarker ( node ) ) {
10741074 // Defer exports until we encounter an EndOfDeclarationMarker node
1075- const id = getOriginalNodeId ( node ) ;
1076- deferredExports [ id ] = appendExportsOfImportEqualsDeclaration ( deferredExports [ id ] , node ) ;
1075+ const originalNode = getOriginalNode ( node ) ;
1076+ deferredExports . set ( node , appendExportsOfImportEqualsDeclaration ( deferredExports . get ( originalNode ) , node ) ) ;
10771077 }
10781078 else {
10791079 statements = appendExportsOfImportEqualsDeclaration ( statements , node ) ;
@@ -1206,8 +1206,8 @@ namespace ts {
12061206 const original = node . original ;
12071207 if ( original && hasAssociatedEndOfDeclarationMarker ( original ) ) {
12081208 // Defer exports until we encounter an EndOfDeclarationMarker node
1209- const id = getOriginalNodeId ( node ) ;
1210- deferredExports [ id ] = appendExportStatement ( deferredExports [ id ] , factory . createIdentifier ( "default" ) , visitNode ( node . expression , visitor ) , /*location*/ node , /*allowComments*/ true ) ;
1209+ const originalNode = getOriginalNode ( node ) ;
1210+ deferredExports . set ( node , appendExportStatement ( deferredExports . get ( originalNode ) , factory . createIdentifier ( "default" ) , visitNode ( node . expression , visitor ) , /*location*/ node , /*allowComments*/ true ) ) ;
12111211 }
12121212 else {
12131213 statements = appendExportStatement ( statements , factory . createIdentifier ( "default" ) , visitNode ( node . expression , visitor ) , /*location*/ node , /*allowComments*/ true ) ;
@@ -1249,8 +1249,8 @@ namespace ts {
12491249
12501250 if ( hasAssociatedEndOfDeclarationMarker ( node ) ) {
12511251 // Defer exports until we encounter an EndOfDeclarationMarker node
1252- const id = getOriginalNodeId ( node ) ;
1253- deferredExports [ id ] = appendExportsOfHoistedDeclaration ( deferredExports [ id ] , node ) ;
1252+ const originalNode = getOriginalNode ( node ) ;
1253+ deferredExports . set ( node , appendExportsOfHoistedDeclaration ( deferredExports . get ( originalNode ) , node ) ) ;
12541254 }
12551255 else {
12561256 statements = appendExportsOfHoistedDeclaration ( statements , node ) ;
@@ -1290,8 +1290,8 @@ namespace ts {
12901290
12911291 if ( hasAssociatedEndOfDeclarationMarker ( node ) ) {
12921292 // Defer exports until we encounter an EndOfDeclarationMarker node
1293- const id = getOriginalNodeId ( node ) ;
1294- deferredExports [ id ] = appendExportsOfHoistedDeclaration ( deferredExports [ id ] , node ) ;
1293+ const originalNode = getOriginalNode ( node ) ;
1294+ deferredExports . set ( node , appendExportsOfHoistedDeclaration ( deferredExports . get ( originalNode ) , node ) ) ;
12951295 }
12961296 else {
12971297 statements = appendExportsOfHoistedDeclaration ( statements , node ) ;
@@ -1370,8 +1370,8 @@ namespace ts {
13701370
13711371 if ( hasAssociatedEndOfDeclarationMarker ( node ) ) {
13721372 // Defer exports until we encounter an EndOfDeclarationMarker node
1373- const id = getOriginalNodeId ( node ) ;
1374- deferredExports [ id ] = appendExportsOfVariableStatement ( deferredExports [ id ] , node ) ;
1373+ const originalNode = getOriginalNode ( node ) ;
1374+ deferredExports . set ( node , appendExportsOfVariableStatement ( deferredExports . get ( originalNode ) , node ) ) ;
13751375 }
13761376 else {
13771377 statements = appendExportsOfVariableStatement ( statements , node ) ;
@@ -1441,8 +1441,8 @@ namespace ts {
14411441 // To balance the declaration, add the exports of the elided variable
14421442 // statement.
14431443 if ( hasAssociatedEndOfDeclarationMarker ( node ) && node . original ! . kind === SyntaxKind . VariableStatement ) {
1444- const id = getOriginalNodeId ( node ) ;
1445- deferredExports [ id ] = appendExportsOfVariableStatement ( deferredExports [ id ] , node . original as VariableStatement ) ;
1444+ const originalNode = getOriginalNode ( node ) ;
1445+ deferredExports . set ( node , appendExportsOfVariableStatement ( deferredExports . get ( originalNode ) , node . original as VariableStatement ) ) ;
14461446 }
14471447
14481448 return node ;
@@ -1467,10 +1467,10 @@ namespace ts {
14671467 // For some transformations we emit an `EndOfDeclarationMarker` to mark the actual
14681468 // end of the transformed declaration. We use this marker to emit any deferred exports
14691469 // of the declaration.
1470- const id = getOriginalNodeId ( node ) ;
1471- const statements = deferredExports [ id ] ;
1470+ const originalNode = getOriginalNode ( node ) ;
1471+ const statements = deferredExports . get ( originalNode ) ;
14721472 if ( statements ) {
1473- delete deferredExports [ id ] ;
1473+ deferredExports . delete ( node ) ;
14741474 return append ( statements , node ) ;
14751475 }
14761476
@@ -1770,7 +1770,7 @@ namespace ts {
17701770 function onEmitNode ( hint : EmitHint , node : Node , emitCallback : ( hint : EmitHint , node : Node ) => void ) : void {
17711771 if ( node . kind === SyntaxKind . SourceFile ) {
17721772 currentSourceFile = node as SourceFile ;
1773- currentModuleInfo = moduleInfoMap [ getOriginalNodeId ( currentSourceFile ) ] ;
1773+ currentModuleInfo = moduleInfoMap . get ( getOriginalNode ( currentSourceFile ) ) ! ;
17741774
17751775 previousOnEmitNode ( hint , node , emitCallback ) ;
17761776
@@ -1984,7 +1984,7 @@ namespace ts {
19841984 || resolver . getReferencedValueDeclaration ( name ) ;
19851985 if ( valueDeclaration ) {
19861986 return currentModuleInfo
1987- && currentModuleInfo . exportedBindings [ getOriginalNodeId ( valueDeclaration ) ] ;
1987+ && currentModuleInfo . exportedBindings . get ( getOriginalNode ( valueDeclaration ) ) ;
19881988 }
19891989 }
19901990 }
0 commit comments