From 198c632e0416ae4e08ad85cf4b5745666023af5a Mon Sep 17 00:00:00 2001 From: James Bardin Date: Sat, 6 Jun 2020 21:42:01 -0400 Subject: [PATCH] incorrect early return during module transformer The recursive call should only return immediately on error. The switch statement to find the current path should not use ReferenceOutside, as we are getting the path for configuration, not for references. This case would not have been taken currently, since all GraphNodeReferenceOutside are also GraphNodeModulePath. --- terraform/node_output.go | 1 + terraform/transform_module_expansion.go | 6 +++--- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/terraform/node_output.go b/terraform/node_output.go index 729710f22..1039c3ec4 100644 --- a/terraform/node_output.go +++ b/terraform/node_output.go @@ -22,6 +22,7 @@ var ( _ RemovableIfNotTargeted = (*nodeExpandOutput)(nil) _ GraphNodeReferenceable = (*nodeExpandOutput)(nil) _ GraphNodeReferencer = (*nodeExpandOutput)(nil) + _ GraphNodeReferenceOutside = (*nodeExpandOutput)(nil) _ GraphNodeDynamicExpandable = (*nodeExpandOutput)(nil) _ graphNodeTemporaryValue = (*nodeExpandOutput)(nil) _ graphNodeExpandsInstances = (*nodeExpandOutput)(nil) diff --git a/terraform/transform_module_expansion.go b/terraform/transform_module_expansion.go index 752755204..2ca6a888b 100644 --- a/terraform/transform_module_expansion.go +++ b/terraform/transform_module_expansion.go @@ -120,8 +120,6 @@ func (t *ModuleExpansionTransformer) transform(g *Graph, c *configs.Config, pare case GraphNodeModulePath: path = t.ModulePath() - case GraphNodeReferenceOutside: - path, _ = t.ReferenceOutside() default: continue } @@ -134,7 +132,9 @@ func (t *ModuleExpansionTransformer) transform(g *Graph, c *configs.Config, pare // Also visit child modules, recursively. for _, cc := range c.Children { - return t.transform(g, cc, v) + if err := t.transform(g, cc, v); err != nil { + return err + } } return nil