@@ -435,9 +435,11 @@ export function createSyntacticTypeNodeBuilder(
435435 if ( ! resolver . canReuseTypeNode ( context , node ) ) {
436436 return resolver . serializeExistingTypeNode ( context , node ) ;
437437 }
438+ const specifier = rewriteModuleSpecifier ( node , node . argument . literal ) ;
439+ const literal = specifier === node . argument . literal ? reuseNode ( context , node . argument . literal ) : specifier ;
438440 return factory . updateImportTypeNode (
439441 node ,
440- factory . updateLiteralTypeNode ( node . argument , rewriteModuleSpecifier ( node , node . argument . literal ) ) ,
442+ literal === node . argument . literal ? reuseNode ( context , node . argument ) : factory . createLiteralTypeNode ( literal ) ,
441443 visitNode ( node . attributes , visitExistingNodeTreeSymbols , isImportAttributes ) ,
442444 visitNode ( node . qualifier , visitExistingNodeTreeSymbols , isEntityName ) ,
443445 visitNodes ( node . typeArguments , visitExistingNodeTreeSymbols , isTypeNode ) ,
@@ -612,10 +614,7 @@ export function createSyntacticTypeNodeBuilder(
612614
613615 function rewriteModuleSpecifier ( parent : ImportTypeNode , lit : StringLiteral ) {
614616 const newName = resolver . getModuleSpecifierOverride ( context , parent , lit ) ;
615- if ( newName ) {
616- return setOriginalNode ( factory . createStringLiteral ( newName ) , lit ) ;
617- }
618- return visitNode ( lit , visitExistingNodeTreeSymbols , isStringLiteral ) ! ;
617+ return newName ? setOriginalNode ( factory . createStringLiteral ( newName ) , lit ) : lit ;
619618 }
620619 }
621620 }
@@ -1123,15 +1122,16 @@ export function createSyntacticTypeNodeBuilder(
11231122 ) ;
11241123 }
11251124 function reuseTypeParameters ( typeParameters : NodeArray < TypeParameterDeclaration > | undefined , context : SyntacticTypeNodeBuilderContext ) {
1126- return typeParameters ?. map ( tp =>
1127- factory . updateTypeParameterDeclaration (
1125+ return typeParameters ?. map ( tp => {
1126+ const { node : tpName } = resolver . trackExistingEntityName ( context , tp . name ) ;
1127+ return factory . updateTypeParameterDeclaration (
11281128 tp ,
11291129 tp . modifiers ?. map ( m => reuseNode ( context , m ) ) ,
1130- reuseNode ( context , tp . name ) ,
1130+ tpName ,
11311131 serializeExistingTypeNodeWithFallback ( tp . constraint , context ) ,
11321132 serializeExistingTypeNodeWithFallback ( tp . default , context ) ,
1133- )
1134- ) ;
1133+ ) ;
1134+ } ) ;
11351135 }
11361136
11371137 function typeFromObjectLiteralMethod ( method : MethodDeclaration , name : PropertyName , context : SyntacticTypeNodeBuilderContext , isConstContext : boolean ) {
0 commit comments