diff --git a/hclwrite/generate.go b/hclwrite/generate.go index 6f6a2e63..dba29c51 100644 --- a/hclwrite/generate.go +++ b/hclwrite/generate.go @@ -337,6 +337,21 @@ func appendTokensForTraversalStep(step hcl.Traverser, toks Tokens) Tokens { Type: hclsyntax.TokenCBrack, Bytes: []byte{']'}, }) + case hcl.TraverseSplat: + toks = append(toks, + &Token{ + Type: hclsyntax.TokenOBrack, + Bytes: []byte{'['}, + }, + &Token{ + Type: hclsyntax.TokenStar, + Bytes: []byte{'*'}, + }, + &Token{ + Type: hclsyntax.TokenCBrack, + Bytes: []byte{']'}, + }, + ) default: panic(fmt.Sprintf("unsupported traversal step type %T", step)) } diff --git a/hclwrite/generate_test.go b/hclwrite/generate_test.go index 06fa0944..c19cb012 100644 --- a/hclwrite/generate_test.go +++ b/hclwrite/generate_test.go @@ -506,6 +506,7 @@ func TestTokensForTraversal(t *testing.T) { hcl.TraverseRoot{Name: "root"}, hcl.TraverseAttr{Name: "attr"}, hcl.TraverseIndex{Key: cty.StringVal("index")}, + hcl.TraverseSplat{}, }, Tokens{ {Type: hclsyntax.TokenIdent, Bytes: []byte("root")}, @@ -516,6 +517,9 @@ func TestTokensForTraversal(t *testing.T) { {Type: hclsyntax.TokenQuotedLit, Bytes: []byte("index")}, {Type: hclsyntax.TokenCQuote, Bytes: []byte(`"`)}, {Type: hclsyntax.TokenCBrack, Bytes: []byte{']'}}, + {Type: hclsyntax.TokenOBrack, Bytes: []byte{'['}}, + {Type: hclsyntax.TokenStar, Bytes: []byte("*")}, + {Type: hclsyntax.TokenCBrack, Bytes: []byte{']'}}, }, }, } diff --git a/traversal.go b/traversal.go index d7101970..62eabd59 100644 --- a/traversal.go +++ b/traversal.go @@ -280,7 +280,6 @@ func (tn TraverseIndex) SourceRange() Range { // TraverseSplat applies the splat operation to its initial value. type TraverseSplat struct { isTraverser - Each Traversal SrcRange Range }