Treat nil diagnostic writers as no-output entries

This commit is contained in:
2026-10-07 16:49:56 +00:00
parent b4010c43bd
commit d5f544d14d
3 changed files with 46 additions and 4 deletions

View File

@@ -111,11 +111,12 @@ func (a *App) present(outcome Outcome, path []string, streams Streams) Outcome {
if len(diagnostics) == 0 {
return outcome
}
delivered := false
for _, diagnostic := range diagnostics {
if diagnostic.Write == nil {
outcome = deliveryFailure(outcome, errors.New("diagnostic has no writer"))
return outcome
continue
}
delivered = true
writer := &checkedWriter{writer: streams.Err}
writeErr := diagnostic.Write(writer)
if writer.failure != nil {
@@ -129,7 +130,9 @@ func (a *App) present(outcome Outcome, path []string, streams Streams) Outcome {
return deliveryFailure(outcome, writeErr)
}
}
outcome.DiagnosticDelivery = DeliveryComplete
if delivered {
outcome.DiagnosticDelivery = DeliveryComplete
}
return outcome
}
@@ -148,7 +151,7 @@ func (a *App) usageLine(path []string) string {
func hasErrorDiagnostic(diagnostics []Diagnostic) bool {
for _, diagnostic := range diagnostics {
if diagnostic.Severity == configkit.SeverityError {
if diagnostic.Write != nil && diagnostic.Severity == configkit.SeverityError {
return true
}
}