diff --git a/hclwrite/ast_block.go b/hclwrite/ast_block.go index 2bcda5b3..edabb26a 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 4ca5cb27..81290404 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{ {