Skip to content

Commit f816232

Browse files
authored
Fix up hover code, mostly temporary (#981)
1 parent 011f524 commit f816232

File tree

6 files changed

+100
-125
lines changed

6 files changed

+100
-125
lines changed

internal/checker/checker.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -18114,7 +18114,7 @@ func (c *Checker) areAllOuterTypeParametersApplied(t *Type) bool {
1811418114
}
1811518115

1811618116
func (c *Checker) reportCircularBaseType(node *ast.Node, t *Type) {
18117-
c.error(node, diagnostics.Type_0_recursively_references_itself_as_a_base_type, c.typeToStringEx(t, nil, TypeFormatFlagsWriteArrayAsGenericType, nil))
18117+
c.error(node, diagnostics.Type_0_recursively_references_itself_as_a_base_type, c.typeToStringEx(t, nil, TypeFormatFlagsWriteArrayAsGenericType))
1811818118
}
1811918119

1812018120
// A valid base type is `any`, an object type or intersection of object types.
@@ -20387,11 +20387,11 @@ func (c *Checker) elaborateNeverIntersection(chain *ast.Diagnostic, node *ast.No
2038720387
if t.flags&TypeFlagsIntersection != 0 && t.objectFlags&ObjectFlagsIsNeverIntersection != 0 {
2038820388
neverProp := core.Find(c.getPropertiesOfUnionOrIntersectionType(t), c.isDiscriminantWithNeverType)
2038920389
if neverProp != nil {
20390-
return NewDiagnosticChainForNode(chain, node, diagnostics.The_intersection_0_was_reduced_to_never_because_property_1_has_conflicting_types_in_some_constituents, c.typeToStringEx(t, nil, TypeFormatFlagsNoTypeReduction, nil), c.symbolToString(neverProp))
20390+
return NewDiagnosticChainForNode(chain, node, diagnostics.The_intersection_0_was_reduced_to_never_because_property_1_has_conflicting_types_in_some_constituents, c.typeToStringEx(t, nil, TypeFormatFlagsNoTypeReduction), c.symbolToString(neverProp))
2039120391
}
2039220392
privateProp := core.Find(c.getPropertiesOfUnionOrIntersectionType(t), isConflictingPrivateProperty)
2039320393
if privateProp != nil {
20394-
return NewDiagnosticChainForNode(chain, node, diagnostics.The_intersection_0_was_reduced_to_never_because_property_1_exists_in_multiple_constituents_and_is_private_in_some, c.typeToStringEx(t, nil, TypeFormatFlagsNoTypeReduction, nil), c.symbolToString(privateProp))
20394+
return NewDiagnosticChainForNode(chain, node, diagnostics.The_intersection_0_was_reduced_to_never_because_property_1_exists_in_multiple_constituents_and_is_private_in_some, c.typeToStringEx(t, nil, TypeFormatFlagsNoTypeReduction), c.symbolToString(privateProp))
2039520395
}
2039620396
}
2039720397
return chain

internal/checker/printer.go

Lines changed: 28 additions & 60 deletions
Original file line numberDiff line numberDiff line change
@@ -164,17 +164,19 @@ func getTrailingSemicolonDeferringWriter(writer printer.EmitTextWriter) printer.
164164
}
165165

166166
func (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

170170
func 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

216218
func (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

273270
func (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

315308
func (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-
362330
func (c *Checker) formatUnionTypes(types []*Type) []*Type {
363331
var result []*Type
364332
var flags TypeFlags

internal/checker/relater.go

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1267,13 +1267,13 @@ func isNonPrimitiveType(t *Type) bool {
12671267
func (c *Checker) getTypeNamesForErrorDisplay(left *Type, right *Type) (string, string) {
12681268
var leftStr string
12691269
if c.symbolValueDeclarationIsContextSensitive(left.symbol) {
1270-
leftStr = c.typeToStringEx(left, left.symbol.ValueDeclaration, TypeFormatFlagsNone, nil)
1270+
leftStr = c.typeToStringEx(left, left.symbol.ValueDeclaration, TypeFormatFlagsNone)
12711271
} else {
12721272
leftStr = c.TypeToString(left)
12731273
}
12741274
var rightStr string
12751275
if c.symbolValueDeclarationIsContextSensitive(right.symbol) {
1276-
rightStr = c.typeToStringEx(right, right.symbol.ValueDeclaration, TypeFormatFlagsNone, nil)
1276+
rightStr = c.typeToStringEx(right, right.symbol.ValueDeclaration, TypeFormatFlagsNone)
12771277
} else {
12781278
rightStr = c.TypeToString(right)
12791279
}
@@ -1285,7 +1285,7 @@ func (c *Checker) getTypeNamesForErrorDisplay(left *Type, right *Type) (string,
12851285
}
12861286

12871287
func (c *Checker) getTypeNameForErrorDisplay(t *Type) string {
1288-
return c.typeToStringEx(t, nil /*enclosingDeclaration*/, TypeFormatFlagsUseFullyQualifiedType, nil)
1288+
return c.typeToStringEx(t, nil /*enclosingDeclaration*/, TypeFormatFlagsUseFullyQualifiedType)
12891289
}
12901290

12911291
func (c *Checker) symbolValueDeclarationIsContextSensitive(symbol *ast.Symbol) bool {
@@ -4645,7 +4645,7 @@ func (r *Relater) reportErrorResults(originalSource *Type, originalTarget *Type,
46454645
prop = core.Find(r.c.getPropertiesOfUnionOrIntersectionType(originalTarget), isConflictingPrivateProperty)
46464646
}
46474647
if prop != nil {
4648-
r.reportError(message, r.c.typeToStringEx(originalTarget, nil /*enclosingDeclaration*/, TypeFormatFlagsNoTypeReduction, nil), r.c.symbolToString(prop))
4648+
r.reportError(message, r.c.typeToStringEx(originalTarget, nil /*enclosingDeclaration*/, TypeFormatFlagsNoTypeReduction), r.c.symbolToString(prop))
46494649
}
46504650
}
46514651
r.reportRelationError(headMessage, source, target)

internal/checker/symbolaccessibility.go

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -93,11 +93,11 @@ func (ch *Checker) IsAnySymbolAccessible(symbols []*ast.Symbol, enclosingDeclara
9393
if hadAccessibleChain != nil {
9494
var moduleName string
9595
if hadAccessibleChain != initialSymbol {
96-
moduleName = ch.symbolToStringEx(hadAccessibleChain, enclosingDeclaration, ast.SymbolFlagsNamespace, SymbolFormatFlagsAllowAnyNodeKind, nil)
96+
moduleName = ch.symbolToStringEx(hadAccessibleChain, enclosingDeclaration, ast.SymbolFlagsNamespace, SymbolFormatFlagsAllowAnyNodeKind)
9797
}
9898
return &printer.SymbolAccessibilityResult{
9999
Accessibility: printer.SymbolAccessibilityNotAccessible,
100-
ErrorSymbolName: ch.symbolToStringEx(initialSymbol, enclosingDeclaration, meaning, SymbolFormatFlagsAllowAnyNodeKind, nil),
100+
ErrorSymbolName: ch.symbolToStringEx(initialSymbol, enclosingDeclaration, meaning, SymbolFormatFlagsAllowAnyNodeKind),
101101
ErrorModuleName: moduleName,
102102
}
103103
}
@@ -743,7 +743,7 @@ func (c *Checker) isSymbolAccessibleWorker(symbol *ast.Symbol, enclosingDeclarat
743743
// name from different external module that is not visible
744744
return printer.SymbolAccessibilityResult{
745745
Accessibility: printer.SymbolAccessibilityCannotBeNamed,
746-
ErrorSymbolName: c.symbolToStringEx(symbol, enclosingDeclaration, meaning, SymbolFormatFlagsAllowAnyNodeKind, nil),
746+
ErrorSymbolName: c.symbolToStringEx(symbol, enclosingDeclaration, meaning, SymbolFormatFlagsAllowAnyNodeKind),
747747
ErrorModuleName: c.symbolToString(symbolExternalModule),
748748
ErrorNode: core.IfElse(ast.IsInJSFile(enclosingDeclaration), enclosingDeclaration, nil),
749749
}
@@ -753,7 +753,7 @@ func (c *Checker) isSymbolAccessibleWorker(symbol *ast.Symbol, enclosingDeclarat
753753
// Just a local name that is not accessible
754754
return printer.SymbolAccessibilityResult{
755755
Accessibility: printer.SymbolAccessibilityNotAccessible,
756-
ErrorSymbolName: c.symbolToStringEx(symbol, enclosingDeclaration, meaning, SymbolFormatFlagsAllowAnyNodeKind, nil),
756+
ErrorSymbolName: c.symbolToStringEx(symbol, enclosingDeclaration, meaning, SymbolFormatFlagsAllowAnyNodeKind),
757757
}
758758
}
759759

0 commit comments

Comments
 (0)