]> git.immae.eu Git - github/fretlink/terraform-provider-statuscake.git/blobdiff - vendor/github.com/hashicorp/terraform/terraform/eval_sequence.go
Upgrade to 0.12
[github/fretlink/terraform-provider-statuscake.git] / vendor / github.com / hashicorp / terraform / terraform / eval_sequence.go
index 82d81782afc4682cb83aa712878a9c28b9c46843..3485e4f14d5992e02cff5f47923052828cb44ebb 100644 (file)
@@ -1,22 +1,37 @@
 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.