core: EvalSequence to handle EvalEarlyExitError
An earlier commit today reworked this to handle non-fatal errors, which are returned "smuggled" as a special type of error to avoid changing the EvalNode interface. Unfortunately, that change then broke the _other_ special thing we smuggle through the error return path: early exit. Now we'll handle them both. This is not perfect because the early-exit path causes us to discard any warnings we've already collected, but it's more important that we bail early than retain warnings.
This commit is contained in:
parent
b6d0abef1d
commit
798adf3ce6
|
@ -18,6 +18,11 @@ func (n *EvalSequence) Eval(ctx EvalContext) (interface{}, error) {
|
|||
}
|
||||
|
||||
if _, err := EvalRaw(n, ctx); err != nil {
|
||||
if _, isEarlyExit := err.(EvalEarlyExitError); isEarlyExit {
|
||||
// In this path we abort early, losing any non-error
|
||||
// diagnostics we saw earlier.
|
||||
return nil, err
|
||||
}
|
||||
diags = diags.Append(err)
|
||||
if diags.HasErrors() {
|
||||
// Halt if we get some errors, but warnings are okay.
|
||||
|
|
Loading…
Reference in New Issue