@@ -164,17 +164,19 @@ func getTrailingSemicolonDeferringWriter(writer printer.EmitTextWriter) printer.
164164}
165165
166166func (c * Checker ) TypeToString (t * Type ) string {
167- return c .typeToStringEx (t , nil , TypeFormatFlagsAllowUniqueESSymbolType | TypeFormatFlagsUseAliasDefinedOutsideCurrentScope , nil )
167+ return c .typeToStringEx (t , nil , TypeFormatFlagsAllowUniqueESSymbolType | TypeFormatFlagsUseAliasDefinedOutsideCurrentScope )
168168}
169169
170170func toNodeBuilderFlags (flags TypeFormatFlags ) nodebuilder.Flags {
171171 return nodebuilder .Flags (flags & TypeFormatFlagsNodeBuilderFlagsMask )
172172}
173173
174- func (c * Checker ) typeToStringEx (t * Type , enclosingDeclaration * ast.Node , flags TypeFormatFlags , writer printer.EmitTextWriter ) string {
175- if writer == nil {
176- writer = printer .NewTextWriter ("" )
177- }
174+ func (c * Checker ) TypeToStringEx (t * Type , enclosingDeclaration * ast.Node , flags TypeFormatFlags ) string {
175+ return c .typeToStringEx (t , enclosingDeclaration , flags )
176+ }
177+
178+ func (c * Checker ) typeToStringEx (t * Type , enclosingDeclaration * ast.Node , flags TypeFormatFlags ) string {
179+ writer := printer .NewTextWriter ("" )
178180 noTruncation := (c .compilerOptions .NoErrorTruncation == core .TSTrue ) || (flags & TypeFormatFlagsNoTruncation != 0 )
179181 combinedFlags := toNodeBuilderFlags (flags ) | nodebuilder .FlagsIgnoreErrors
180182 if noTruncation {
@@ -214,13 +216,16 @@ func (c *Checker) SymbolToString(s *ast.Symbol) string {
214216}
215217
216218func (c * Checker ) symbolToString (symbol * ast.Symbol ) string {
217- return c .symbolToStringEx (symbol , nil , ast .SymbolFlagsAll , SymbolFormatFlagsAllowAnyNodeKind , nil )
219+ return c .symbolToStringEx (symbol , nil , ast .SymbolFlagsAll , SymbolFormatFlagsAllowAnyNodeKind )
218220}
219221
220- func (c * Checker ) symbolToStringEx (symbol * ast.Symbol , enclosingDeclaration * ast.Node , meaning ast.SymbolFlags , flags SymbolFormatFlags , writer printer.EmitTextWriter ) string {
221- if writer == nil {
222- writer = printer .SingleLineStringWriterPool .Get ().(printer.EmitTextWriter )
223- }
222+ func (c * Checker ) SymbolToStringEx (symbol * ast.Symbol , enclosingDeclaration * ast.Node , meaning ast.SymbolFlags , flags SymbolFormatFlags ) string {
223+ return c .symbolToStringEx (symbol , enclosingDeclaration , meaning , flags )
224+ }
225+
226+ func (c * Checker ) symbolToStringEx (symbol * ast.Symbol , enclosingDeclaration * ast.Node , meaning ast.SymbolFlags , flags SymbolFormatFlags ) string {
227+ writer , putWriter := printer .GetSingleLineStringWriter ()
228+ defer putWriter ()
224229
225230 nodeFlags := nodebuilder .FlagsIgnoreErrors
226231 internalNodeFlags := nodebuilder .InternalFlagsNone
@@ -244,14 +249,6 @@ func (c *Checker) symbolToStringEx(symbol *ast.Symbol, enclosingDeclaration *ast
244249 if enclosingDeclaration != nil {
245250 sourceFile = ast .GetSourceFileOfNode (enclosingDeclaration )
246251 }
247- if writer == printer .SingleLineStringWriterPool .Get ().(printer.EmitTextWriter ) {
248- // handle uses of the single-line writer during an ongoing write
249- existing := writer .String ()
250- defer writer .Clear ()
251- if existing != "" {
252- defer writer .WriteKeyword (existing )
253- }
254- }
255252 var printer_ * printer.Printer
256253 if enclosingDeclaration != nil && enclosingDeclaration .Kind == ast .KindSourceFile {
257254 printer_ = createPrinterWithRemoveCommentsNeverAsciiEscape (c .diagnosticConstructionContext )
@@ -271,10 +268,14 @@ func (c *Checker) symbolToStringEx(symbol *ast.Symbol, enclosingDeclaration *ast
271268}
272269
273270func (c * Checker ) signatureToString (signature * Signature ) string {
274- return c .signatureToStringEx (signature , nil , TypeFormatFlagsNone , nil )
271+ return c .signatureToStringEx (signature , nil , TypeFormatFlagsNone )
272+ }
273+
274+ func (c * Checker ) SignatureToStringEx (signature * Signature , enclosingDeclaration * ast.Node , flags TypeFormatFlags ) string {
275+ return c .signatureToStringEx (signature , enclosingDeclaration , flags )
275276}
276277
277- func (c * Checker ) signatureToStringEx (signature * Signature , enclosingDeclaration * ast.Node , flags TypeFormatFlags , writer printer. EmitTextWriter ) string {
278+ func (c * Checker ) signatureToStringEx (signature * Signature , enclosingDeclaration * ast.Node , flags TypeFormatFlags ) string {
278279 isConstructor := signature .flags & SignatureFlagsConstruct != 0
279280 var sigOutput ast.Kind
280281 if flags & TypeFormatFlagsWriteArrowStyleSignature != 0 {
@@ -290,51 +291,34 @@ func (c *Checker) signatureToStringEx(signature *Signature, enclosingDeclaration
290291 sigOutput = ast .KindCallSignature
291292 }
292293 }
293- if writer == nil {
294- writer = printer . SingleLineStringWriterPool . Get ().(printer. EmitTextWriter )
295- }
294+ writer , putWriter := printer . GetSingleLineStringWriter ()
295+ defer putWriter ( )
296+
296297 combinedFlags := toNodeBuilderFlags (flags ) | nodebuilder .FlagsIgnoreErrors | nodebuilder .FlagsWriteTypeParametersInQualifiedName
297298 sig := c .nodeBuilder .SignatureToSignatureDeclaration (signature , sigOutput , enclosingDeclaration , combinedFlags , nodebuilder .InternalFlagsNone , nil )
298299 printer_ := createPrinterWithRemoveCommentsOmitTrailingSemicolon (c .diagnosticConstructionContext )
299300 var sourceFile * ast.SourceFile
300301 if enclosingDeclaration != nil {
301302 sourceFile = ast .GetSourceFileOfNode (enclosingDeclaration )
302303 }
303- if writer == printer .SingleLineStringWriterPool .Get ().(printer.EmitTextWriter ) {
304- // handle uses of the single-line writer during an ongoing write
305- existing := writer .String ()
306- defer writer .Clear ()
307- if existing != "" {
308- defer writer .WriteKeyword (existing )
309- }
310- }
311304 printer_ .Write (sig /*sourceFile*/ , sourceFile , getTrailingSemicolonDeferringWriter (writer ), nil ) // TODO: GH#18217
312305 return writer .String ()
313306}
314307
315308func (c * Checker ) typePredicateToString (typePredicate * TypePredicate ) string {
316- return c .typePredicateToStringEx (typePredicate , nil , TypeFormatFlagsUseAliasDefinedOutsideCurrentScope , nil )
309+ return c .typePredicateToStringEx (typePredicate , nil , TypeFormatFlagsUseAliasDefinedOutsideCurrentScope )
317310}
318311
319- func (c * Checker ) typePredicateToStringEx (typePredicate * TypePredicate , enclosingDeclaration * ast.Node , flags TypeFormatFlags , writer printer.EmitTextWriter ) string {
320- if writer == nil {
321- writer = printer .SingleLineStringWriterPool .Get ().(printer.EmitTextWriter )
322- }
312+ func (c * Checker ) typePredicateToStringEx (typePredicate * TypePredicate , enclosingDeclaration * ast.Node , flags TypeFormatFlags ) string {
313+ writer , putWriter := printer .GetSingleLineStringWriter ()
314+ defer putWriter ()
323315 combinedFlags := toNodeBuilderFlags (flags ) | nodebuilder .FlagsIgnoreErrors | nodebuilder .FlagsWriteTypeParametersInQualifiedName
324316 predicate := c .nodeBuilder .TypePredicateToTypePredicateNode (typePredicate , enclosingDeclaration , combinedFlags , nodebuilder .InternalFlagsNone , nil ) // TODO: GH#18217
325317 printer_ := createPrinterWithRemoveComments (c .diagnosticConstructionContext )
326318 var sourceFile * ast.SourceFile
327319 if enclosingDeclaration != nil {
328320 sourceFile = ast .GetSourceFileOfNode (enclosingDeclaration )
329321 }
330- if writer == printer .SingleLineStringWriterPool .Get ().(printer.EmitTextWriter ) {
331- // handle uses of the single-line writer during an ongoing write
332- existing := writer .String ()
333- defer writer .Clear ()
334- if existing != "" {
335- defer writer .WriteKeyword (existing )
336- }
337- }
338322 printer_ .Write (predicate /*sourceFile*/ , sourceFile , writer , nil )
339323 return writer .String ()
340324}
@@ -343,22 +327,6 @@ func (c *Checker) valueToString(value any) string {
343327 return ValueToString (value )
344328}
345329
346- func (c * Checker ) WriteSymbol (symbol * ast.Symbol , enclosingDeclaration * ast.Node , meaning ast.SymbolFlags , flags SymbolFormatFlags , writer printer.EmitTextWriter ) string {
347- return c .symbolToStringEx (symbol , enclosingDeclaration , meaning , flags , writer )
348- }
349-
350- func (c * Checker ) WriteType (t * Type , enclosingDeclaration * ast.Node , flags TypeFormatFlags , writer printer.EmitTextWriter ) string {
351- return c .typeToStringEx (t , enclosingDeclaration , flags , writer )
352- }
353-
354- func (c * Checker ) WriteSignature (s * Signature , enclosingDeclaration * ast.Node , flags TypeFormatFlags , writer printer.EmitTextWriter ) string {
355- return c .signatureToStringEx (s , enclosingDeclaration , flags , writer )
356- }
357-
358- func (c * Checker ) WriteTypePredicate (p * TypePredicate , enclosingDeclaration * ast.Node , flags TypeFormatFlags , writer printer.EmitTextWriter ) string {
359- return c .typePredicateToStringEx (p , enclosingDeclaration , flags , writer )
360- }
361-
362330func (c * Checker ) formatUnionTypes (types []* Type ) []* Type {
363331 var result []* Type
364332 var flags TypeFlags
0 commit comments