From c0bca9d5e95f8a12a15120a4b4addca107170aa7 Mon Sep 17 00:00:00 2001 From: James Bardin Date: Thu, 2 Apr 2020 12:47:16 -0400 Subject: [PATCH] check for the correct types when pruning values There is not one more non-dependent type to look for when pruning unused values. This fixes the oversight, but still leaves the ugly concrete type checking which we need to remove. --- terraform/transform_reference.go | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/terraform/transform_reference.go b/terraform/transform_reference.go index 41b4bac79..cf03cda00 100644 --- a/terraform/transform_reference.go +++ b/terraform/transform_reference.go @@ -220,11 +220,22 @@ func (t *PruneUnusedValuesTransformer) Transform(g *Graph) error { log.Printf("[TRACE] PruneUnusedValuesTransformer: removing unused value %s", dag.VertexName(v)) g.Remove(v) removed++ - case 1: + default: // because an output's destroy node always depends on the output, // we need to check for the case of a single destroy node. - d := dependants.List()[0] - if _, ok := d.(*NodeDestroyableOutput); ok { + removable := true + SEARCH: + for _, d := range dependants.List() { + switch d.(type) { + case *NodeDestroyableOutput, *nodeCloseModule: + //pass + default: + removable = false + break SEARCH + } + } + + if removable { log.Printf("[TRACE] PruneUnusedValuesTransformer: removing unused value %s", dag.VertexName(v)) g.Remove(v) removed++