7d8f0ff870
All of the other subdivisions of a block were already nodes, but we'd represented the labels as an undifferentiated set of nodes belonging directly to the block's child node list. Now that we support replacing the labels in the public API, that's a good excuse to refactor this slightly to make the labels their own node. As well as being consistent with everything else in Block, this also makes it easier to implement the Block.SetLabels operation because we can just change the children of the labels node, rather than having to carefully identify and extract the individual child nodes of the block that happen to represent labels. Internally this models the labels in a similar sort of way as the content of a body, although we've kept the public API directly on the Block type here because that's a more straightforward model for the use-cases we currently know and matches better with the API of hcl.Block. This is just an internal change for consistency. I also added a few tests for having comments interspersed with labels while I was here, because that helped to better exercise the new parseBlockLabels function. |
||
---|---|---|
.. | ||
fuzz | ||
ast_attribute.go | ||
ast_block_test.go | ||
ast_block.go | ||
ast_body_test.go | ||
ast_body.go | ||
ast_expression.go | ||
ast_test.go | ||
ast.go | ||
doc.go | ||
examples_test.go | ||
format_test.go | ||
format.go | ||
generate_test.go | ||
generate.go | ||
native_node_sorter.go | ||
node.go | ||
parser_test.go | ||
parser.go | ||
public.go | ||
round_trip_test.go | ||
tokens.go |