@@ -111,10 +111,7 @@ import {
111111 createGetCanonicalFileName,
112112 createGetSymbolWalker,
113113 createModeAwareCacheKey,
114- createPrinterWithDefaults,
115- createPrinterWithRemoveComments,
116- createPrinterWithRemoveCommentsNeverAsciiEscape,
117- createPrinterWithRemoveCommentsOmitTrailingSemicolon,
114+ createOrReusePrinter,
118115 createPropertyNameNodeForIdentifierOrLiteral,
119116 createSymbolTable,
120117 createTextWriter,
@@ -6127,8 +6124,8 @@ export function createTypeChecker(host: TypeCheckerHost): TypeChecker {
61276124 const entity = builder(symbol, meaning!, enclosingDeclaration, nodeFlags)!; // TODO: GH#18217
61286125 // add neverAsciiEscape for GH#39027
61296126 const printer = enclosingDeclaration?.kind === SyntaxKind.SourceFile
6130- ? createPrinterWithRemoveCommentsNeverAsciiEscape( )
6131- : createPrinterWithRemoveComments( );
6127+ ? createOrReusePrinter({ removeComments: true, neverAsciiEscape: true } )
6128+ : createOrReusePrinter({ removeComments: true } );
61326129 const sourceFile = enclosingDeclaration && getSourceFileOfNode(enclosingDeclaration);
61336130 printer.writeNode(EmitHint.Unspecified, entity, /*sourceFile*/ sourceFile, writer);
61346131 return writer;
@@ -6147,7 +6144,7 @@ export function createTypeChecker(host: TypeCheckerHost): TypeChecker {
61476144 sigOutput = kind === SignatureKind.Construct ? SyntaxKind.ConstructSignature : SyntaxKind.CallSignature;
61486145 }
61496146 const sig = nodeBuilder.signatureToSignatureDeclaration(signature, sigOutput, enclosingDeclaration, toNodeBuilderFlags(flags) | NodeBuilderFlags.IgnoreErrors | NodeBuilderFlags.WriteTypeParametersInQualifiedName);
6150- const printer = createPrinterWithRemoveCommentsOmitTrailingSemicolon( );
6147+ const printer = createOrReusePrinter({ removeComments: true, omitTrailingSemicolon: true } );
61516148 const sourceFile = enclosingDeclaration && getSourceFileOfNode(enclosingDeclaration);
61526149 printer.writeNode(EmitHint.Unspecified, sig!, /*sourceFile*/ sourceFile, getTrailingSemicolonDeferringWriter(writer)); // TODO: GH#18217
61536150 return writer;
@@ -6160,7 +6157,8 @@ export function createTypeChecker(host: TypeCheckerHost): TypeChecker {
61606157 if (typeNode === undefined) return Debug.fail("should always get typenode");
61616158 // The unresolved type gets a synthesized comment on `any` to hint to users that it's not a plain `any`.
61626159 // Otherwise, we always strip comments out.
6163- const printer = type !== unresolvedType ? createPrinterWithRemoveComments() : createPrinterWithDefaults();
6160+ const options = { removeComments: type !== unresolvedType };
6161+ const printer = createOrReusePrinter(options);
61646162 const sourceFile = enclosingDeclaration && getSourceFileOfNode(enclosingDeclaration);
61656163 printer.writeNode(EmitHint.Unspecified, typeNode, /*sourceFile*/ sourceFile, writer);
61666164 const result = writer.getText();
@@ -9640,7 +9638,7 @@ export function createTypeChecker(host: TypeCheckerHost): TypeChecker {
96409638 typePredicate.kind === TypePredicateKind.Identifier || typePredicate.kind === TypePredicateKind.AssertsIdentifier ? factory.createIdentifier(typePredicate.parameterName) : factory.createThisTypeNode(),
96419639 typePredicate.type && nodeBuilder.typeToTypeNode(typePredicate.type, enclosingDeclaration, toNodeBuilderFlags(flags) | NodeBuilderFlags.IgnoreErrors | NodeBuilderFlags.WriteTypeParametersInQualifiedName)! // TODO: GH#18217
96429640 );
9643- const printer = createPrinterWithRemoveComments( );
9641+ const printer = createOrReusePrinter({ removeComments: true } );
96449642 const sourceFile = enclosingDeclaration && getSourceFileOfNode(enclosingDeclaration);
96459643 printer.writeNode(EmitHint.Unspecified, predicate, /*sourceFile*/ sourceFile, writer);
96469644 return writer;
0 commit comments