Merge pull request #374 from hashicorp/alisdair/hclwrite-splat
hclwrite: Fix panic for dotted full splat (foo.*)
This commit is contained in:
commit
20b8095b08
@ -670,6 +670,7 @@ Traversal:
|
||||
trav := make(hcl.Traversal, 0, 1)
|
||||
var firstRange, lastRange hcl.Range
|
||||
firstRange = p.NextRange()
|
||||
lastRange = marker.Range
|
||||
for p.Peek().Type == TokenDot {
|
||||
dot := p.Read()
|
||||
|
||||
|
@ -618,6 +618,222 @@ func TestParse(t *testing.T) {
|
||||
},
|
||||
},
|
||||
},
|
||||
{
|
||||
"a = foo.*\n",
|
||||
TestTreeNode{
|
||||
Type: "Body",
|
||||
Children: []TestTreeNode{
|
||||
{
|
||||
Type: "Attribute",
|
||||
Children: []TestTreeNode{
|
||||
{
|
||||
Type: "comments",
|
||||
},
|
||||
{
|
||||
Type: "identifier",
|
||||
Val: "a",
|
||||
},
|
||||
{
|
||||
Type: "Tokens",
|
||||
Val: " =",
|
||||
},
|
||||
{
|
||||
Type: "Expression",
|
||||
Children: []TestTreeNode{
|
||||
{
|
||||
Type: "Traversal",
|
||||
Children: []TestTreeNode{
|
||||
{
|
||||
Type: "TraverseName",
|
||||
Children: []TestTreeNode{
|
||||
{
|
||||
Type: "identifier",
|
||||
Val: " foo",
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
{
|
||||
Type: "Tokens",
|
||||
Val: ".*",
|
||||
},
|
||||
},
|
||||
},
|
||||
{
|
||||
Type: "comments",
|
||||
},
|
||||
{
|
||||
Type: "Tokens",
|
||||
Val: "\n",
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
{
|
||||
"a = foo.*.bar\n",
|
||||
TestTreeNode{
|
||||
Type: "Body",
|
||||
Children: []TestTreeNode{
|
||||
{
|
||||
Type: "Attribute",
|
||||
Children: []TestTreeNode{
|
||||
{
|
||||
Type: "comments",
|
||||
},
|
||||
{
|
||||
Type: "identifier",
|
||||
Val: "a",
|
||||
},
|
||||
{
|
||||
Type: "Tokens",
|
||||
Val: " =",
|
||||
},
|
||||
{
|
||||
Type: "Expression",
|
||||
Children: []TestTreeNode{
|
||||
{
|
||||
Type: "Traversal",
|
||||
Children: []TestTreeNode{
|
||||
{
|
||||
Type: "TraverseName",
|
||||
Children: []TestTreeNode{
|
||||
{
|
||||
Type: "identifier",
|
||||
Val: " foo",
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
{
|
||||
Type: "Tokens",
|
||||
Val: ".*.bar",
|
||||
},
|
||||
},
|
||||
},
|
||||
{
|
||||
Type: "comments",
|
||||
},
|
||||
{
|
||||
Type: "Tokens",
|
||||
Val: "\n",
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
{
|
||||
"a = foo[*]\n",
|
||||
TestTreeNode{
|
||||
Type: "Body",
|
||||
Children: []TestTreeNode{
|
||||
{
|
||||
Type: "Attribute",
|
||||
Children: []TestTreeNode{
|
||||
{
|
||||
Type: "comments",
|
||||
},
|
||||
{
|
||||
Type: "identifier",
|
||||
Val: "a",
|
||||
},
|
||||
{
|
||||
Type: "Tokens",
|
||||
Val: " =",
|
||||
},
|
||||
{
|
||||
Type: "Expression",
|
||||
Children: []TestTreeNode{
|
||||
{
|
||||
Type: "Traversal",
|
||||
Children: []TestTreeNode{
|
||||
{
|
||||
Type: "TraverseName",
|
||||
Children: []TestTreeNode{
|
||||
{
|
||||
Type: "identifier",
|
||||
Val: " foo",
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
{
|
||||
Type: "Tokens",
|
||||
Val: "[*]",
|
||||
},
|
||||
},
|
||||
},
|
||||
{
|
||||
Type: "comments",
|
||||
},
|
||||
{
|
||||
Type: "Tokens",
|
||||
Val: "\n",
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
{
|
||||
"a = foo[*].bar\n",
|
||||
TestTreeNode{
|
||||
Type: "Body",
|
||||
Children: []TestTreeNode{
|
||||
{
|
||||
Type: "Attribute",
|
||||
Children: []TestTreeNode{
|
||||
{
|
||||
Type: "comments",
|
||||
},
|
||||
{
|
||||
Type: "identifier",
|
||||
Val: "a",
|
||||
},
|
||||
{
|
||||
Type: "Tokens",
|
||||
Val: " =",
|
||||
},
|
||||
{
|
||||
Type: "Expression",
|
||||
Children: []TestTreeNode{
|
||||
{
|
||||
Type: "Traversal",
|
||||
Children: []TestTreeNode{
|
||||
{
|
||||
Type: "TraverseName",
|
||||
Children: []TestTreeNode{
|
||||
{
|
||||
Type: "identifier",
|
||||
Val: " foo",
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
{
|
||||
Type: "Tokens",
|
||||
Val: "[*].bar",
|
||||
},
|
||||
},
|
||||
},
|
||||
{
|
||||
Type: "comments",
|
||||
},
|
||||
{
|
||||
Type: "Tokens",
|
||||
Val: "\n",
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
{
|
||||
"a = foo[bar]\n",
|
||||
TestTreeNode{
|
||||
|
Loading…
Reference in New Issue
Block a user