opentofu/internal/terraform/transform_expand.go
Martin Atkins a9bd4099d3 core: DynamicExpand can return diagnostics
We were previously _trying_ to handle diagnostics here but were not quite
doing it right because we were testing whether the resulting error was
nil rather than appending it to the diagnostics and then seeing if the
result has errors.

The difference here is important because it allows DynamicExpand to return
warnings without associated errors when needed. Previously the graph
walker would treat a warnings-only result as if it were an error.

Ideally we'd change DynamicExpand to return diagnostics directly, but we
previously decided against that because there were so many implementors
to update, and my intent for this change is to be surgical in the update
so we minimize risk of backporting the change into patch releases.
2022-09-26 13:46:25 -07:00

18 lines
750 B
Go

package terraform
// GraphNodeDynamicExpandable is an interface that nodes can implement
// to signal that they can be expanded at eval-time (hence dynamic).
// These nodes are given the eval context and are expected to return
// a new subgraph.
type GraphNodeDynamicExpandable interface {
// DynamicExpand returns a new graph which will be treated as the dynamic
// subgraph of the receiving node.
//
// The second return value is of type error for historical reasons;
// it's valid (and most ideal) for DynamicExpand to return the result
// of calling ErrWithWarnings on a tfdiags.Diagnostics value instead,
// in which case the caller will unwrap it and gather the individual
// diagnostics.
DynamicExpand(EvalContext) (*Graph, error)
}