@@ -800,30 +800,31 @@ namespace ts {
800800 updated . fileName = node . fileName ;
801801 updated . path = node . path ;
802802 updated . text = node . text ;
803- updated . amdDependencies = node . amdDependencies ;
804- updated . moduleName = node . moduleName ;
805- updated . referencedFiles = node . referencedFiles ;
806- updated . typeReferenceDirectives = node . typeReferenceDirectives ;
807- updated . languageVariant = node . languageVariant ;
808- updated . isDeclarationFile = node . isDeclarationFile ;
809- updated . renamedDependencies = node . renamedDependencies ;
810- updated . hasNoDefaultLib = node . hasNoDefaultLib ;
811- updated . languageVersion = node . languageVersion ;
812- updated . scriptKind = node . scriptKind ;
813- updated . externalModuleIndicator = node . externalModuleIndicator ;
814- updated . commonJsModuleIndicator = node . commonJsModuleIndicator ;
815- updated . identifiers = node . identifiers ;
816- updated . nodeCount = node . nodeCount ;
817- updated . identifierCount = node . identifierCount ;
818- updated . symbolCount = node . symbolCount ;
819- updated . parseDiagnostics = node . parseDiagnostics ;
820- updated . bindDiagnostics = node . bindDiagnostics ;
821- updated . lineMap = node . lineMap ;
822- updated . classifiableNames = node . classifiableNames ;
823- updated . resolvedModules = node . resolvedModules ;
824- updated . resolvedTypeReferenceDirectiveNames = node . resolvedTypeReferenceDirectiveNames ;
825- updated . imports = node . imports ;
826- updated . moduleAugmentations = node . moduleAugmentations ;
803+ if ( node . amdDependencies !== undefined ) updated . amdDependencies = node . amdDependencies ;
804+ if ( node . moduleName !== undefined ) updated . moduleName = node . moduleName ;
805+ if ( node . referencedFiles !== undefined ) updated . referencedFiles = node . referencedFiles ;
806+ if ( node . typeReferenceDirectives !== undefined ) updated . typeReferenceDirectives = node . typeReferenceDirectives ;
807+ if ( node . languageVariant !== undefined ) updated . languageVariant = node . languageVariant ;
808+ if ( node . isDeclarationFile !== undefined ) updated . isDeclarationFile = node . isDeclarationFile ;
809+ if ( node . renamedDependencies !== undefined ) updated . renamedDependencies = node . renamedDependencies ;
810+ if ( node . hasNoDefaultLib !== undefined ) updated . hasNoDefaultLib = node . hasNoDefaultLib ;
811+ if ( node . languageVersion !== undefined ) updated . languageVersion = node . languageVersion ;
812+ if ( node . scriptKind !== undefined ) updated . scriptKind = node . scriptKind ;
813+ if ( node . externalModuleIndicator !== undefined ) updated . externalModuleIndicator = node . externalModuleIndicator ;
814+ if ( node . commonJsModuleIndicator !== undefined ) updated . commonJsModuleIndicator = node . commonJsModuleIndicator ;
815+ if ( node . identifiers !== undefined ) updated . identifiers = node . identifiers ;
816+ if ( node . nodeCount !== undefined ) updated . nodeCount = node . nodeCount ;
817+ if ( node . identifierCount !== undefined ) updated . identifierCount = node . identifierCount ;
818+ if ( node . symbolCount !== undefined ) updated . symbolCount = node . symbolCount ;
819+ if ( node . parseDiagnostics !== undefined ) updated . parseDiagnostics = node . parseDiagnostics ;
820+ if ( node . bindDiagnostics !== undefined ) updated . bindDiagnostics = node . bindDiagnostics ;
821+ if ( node . lineMap !== undefined ) updated . lineMap = node . lineMap ;
822+ if ( node . classifiableNames !== undefined ) updated . classifiableNames = node . classifiableNames ;
823+ if ( node . resolvedModules !== undefined ) updated . resolvedModules = node . resolvedModules ;
824+ if ( node . resolvedTypeReferenceDirectiveNames !== undefined ) updated . resolvedTypeReferenceDirectiveNames = node . resolvedTypeReferenceDirectiveNames ;
825+ if ( node . imports !== undefined ) updated . imports = node . imports ;
826+ if ( node . moduleAugmentations !== undefined ) updated . moduleAugmentations = node . moduleAugmentations ;
827+ if ( node . tslib !== undefined ) updated . tslib = node . tslib ;
827828 return updateNode ( updated , node ) ;
828829 }
829830
@@ -923,6 +924,12 @@ namespace ts {
923924 return node ;
924925 }
925926
927+ export function createNamespaceImport ( name : Identifier ) : NamespaceImport {
928+ const node = < NamespaceImport > createNode ( SyntaxKind . NamespaceImport ) ;
929+ node . name = name ;
930+ return node ;
931+ }
932+
926933 export function createNamedImports ( elements : NodeArray < ImportSpecifier > , location ?: TextRange ) : NamedImports {
927934 const node = < NamedImports > createNode ( SyntaxKind . NamedImports , location ) ;
928935 node . elements = elements ;
@@ -1058,9 +1065,15 @@ namespace ts {
10581065
10591066 // Helpers
10601067
1061- export function createExtendsHelper ( name : Identifier ) {
1068+ export function createHelperName ( tslib : Identifier , name : string ) {
1069+ return tslib
1070+ ? createPropertyAccess ( tslib , name )
1071+ : createIdentifier ( name ) ;
1072+ }
1073+
1074+ export function createExtendsHelper ( tslib : Identifier , name : Identifier ) {
10621075 return createCall (
1063- createIdentifier ( "__extends" ) ,
1076+ createHelperName ( tslib , "__extends" ) ,
10641077 /*typeArguments*/ undefined ,
10651078 [
10661079 name ,
@@ -1069,17 +1082,17 @@ namespace ts {
10691082 ) ;
10701083 }
10711084
1072- export function createAssignHelper ( attributesSegments : Expression [ ] ) {
1085+ export function createAssignHelper ( tslib : Identifier , attributesSegments : Expression [ ] ) {
10731086 return createCall (
1074- createIdentifier ( "__assign" ) ,
1087+ createHelperName ( tslib , "__assign" ) ,
10751088 /*typeArguments*/ undefined ,
10761089 attributesSegments
10771090 ) ;
10781091 }
10791092
1080- export function createParamHelper ( expression : Expression , parameterOffset : number , location ?: TextRange ) {
1093+ export function createParamHelper ( tslib : Identifier , expression : Expression , parameterOffset : number , location ?: TextRange ) {
10811094 return createCall (
1082- createIdentifier ( "__param" ) ,
1095+ createHelperName ( tslib , "__param" ) ,
10831096 /*typeArguments*/ undefined ,
10841097 [
10851098 createLiteral ( parameterOffset ) ,
@@ -1089,9 +1102,9 @@ namespace ts {
10891102 ) ;
10901103 }
10911104
1092- export function createMetadataHelper ( metadataKey : string , metadataValue : Expression ) {
1105+ export function createMetadataHelper ( tslib : Identifier , metadataKey : string , metadataValue : Expression ) {
10931106 return createCall (
1094- createIdentifier ( "__metadata" ) ,
1107+ createHelperName ( tslib , "__metadata" ) ,
10951108 /*typeArguments*/ undefined ,
10961109 [
10971110 createLiteral ( metadataKey ) ,
@@ -1100,7 +1113,7 @@ namespace ts {
11001113 ) ;
11011114 }
11021115
1103- export function createDecorateHelper ( decoratorExpressions : Expression [ ] , target : Expression , memberName ?: Expression , descriptor ?: Expression , location ?: TextRange ) {
1116+ export function createDecorateHelper ( tslib : Identifier , decoratorExpressions : Expression [ ] , target : Expression , memberName ?: Expression , descriptor ?: Expression , location ?: TextRange ) {
11041117 const argumentsArray : Expression [ ] = [ ] ;
11051118 argumentsArray . push ( createArrayLiteral ( decoratorExpressions , /*location*/ undefined , /*multiLine*/ true ) ) ;
11061119 argumentsArray . push ( target ) ;
@@ -1111,12 +1124,12 @@ namespace ts {
11111124 }
11121125 }
11131126
1114- return createCall ( createIdentifier ( "__decorate" ) , /*typeArguments*/ undefined , argumentsArray , location ) ;
1127+ return createCall ( createHelperName ( tslib , "__decorate" ) , /*typeArguments*/ undefined , argumentsArray , location ) ;
11151128 }
11161129
1117- export function createAwaiterHelper ( hasLexicalArguments : boolean , promiseConstructor : EntityName | Expression , body : Block ) {
1130+ export function createAwaiterHelper ( tslib : Identifier , hasLexicalArguments : boolean , promiseConstructor : EntityName | Expression , body : Block ) {
11181131 return createCall (
1119- createIdentifier ( "__awaiter" ) ,
1132+ createHelperName ( tslib , "__awaiter" ) ,
11201133 /*typeArguments*/ undefined ,
11211134 [
11221135 createThis ( ) ,
@@ -1920,7 +1933,8 @@ namespace ts {
19201933 export function getLocalNameForExternalImport ( node : ImportDeclaration | ExportDeclaration | ImportEqualsDeclaration , sourceFile : SourceFile ) : Identifier {
19211934 const namespaceDeclaration = getNamespaceDeclarationNode ( node ) ;
19221935 if ( namespaceDeclaration && ! isDefaultImport ( node ) ) {
1923- return createIdentifier ( getSourceTextOfNodeFromSourceFile ( sourceFile , namespaceDeclaration . name ) ) ;
1936+ const name = namespaceDeclaration . name ;
1937+ return isGeneratedIdentifier ( name ) ? name : createIdentifier ( getSourceTextOfNodeFromSourceFile ( sourceFile , namespaceDeclaration . name ) ) ;
19241938 }
19251939 if ( node . kind === SyntaxKind . ImportDeclaration && ( < ImportDeclaration > node ) . importClause ) {
19261940 return getGeneratedNameForNode ( node ) ;
0 commit comments