summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--hclwrite/ast_block.go6
-rw-r--r--hclwrite/ast_block_test.go9
2 files changed, 14 insertions, 1 deletions
diff --git a/hclwrite/ast_block.go b/hclwrite/ast_block.go
index 2bcda5b..edabb26 100644
--- a/hclwrite/ast_block.go
+++ b/hclwrite/ast_block.go
@@ -159,6 +159,12 @@ func (bl *blockLabels) Current() []string {
if !diags.HasErrors() {
labelNames = append(labelNames, labelString)
}
+ } else if len(tokens) == 2 &&
+ tokens[0].Type == hclsyntax.TokenOQuote &&
+ tokens[1].Type == hclsyntax.TokenCQuote {
+ // An open quote followed immediately by a closing quote is a
+ // valid but unusual blank string label.
+ labelNames = append(labelNames, "")
}
default:
diff --git a/hclwrite/ast_block_test.go b/hclwrite/ast_block_test.go
index 4ca5cb2..8129040 100644
--- a/hclwrite/ast_block_test.go
+++ b/hclwrite/ast_block_test.go
@@ -107,6 +107,13 @@ escape "\u0041" {
`,
[]string{"\u0041"},
},
+ {
+ `
+blank "" {
+}
+`,
+ []string{""},
+ },
}
for _, test := range tests {
@@ -414,7 +421,7 @@ func TestBlockSetLabels(t *testing.T) {
{
`foo "hoge" /* foo */ "" {}`,
"foo",
- []string{"hoge"},
+ []string{"hoge", ""},
[]string{"fuga"}, // force quoted form even if the old one is unquoted.
Tokens{
{