Treat nil diagnostic writers as no-output entries
This commit is contained in:
11
execute.go
11
execute.go
@@ -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
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user