package terraform
+import (
+ "github.com/hashicorp/terraform/tfdiags"
+)
+
// EvalSequence is an EvalNode that evaluates in sequence.
type EvalSequence struct {
Nodes []EvalNode
}
func (n *EvalSequence) Eval(ctx EvalContext) (interface{}, error) {
+ var diags tfdiags.Diagnostics
+
for _, n := range n.Nodes {
if n == nil {
continue
}
if _, err := EvalRaw(n, ctx); err != nil {
- return nil, err
+ 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.
+ break
+ }
}
}
- return nil, nil
+ return nil, diags.ErrWithWarnings()
}
// EvalNodeFilterable impl.