Skip to content

Commit fbbd7b6

Browse files
heredoc parsing: require ending delimiter to be on its own line with possible indentation (#194)
1 parent 085617f commit fbbd7b6

3 files changed

Lines changed: 8 additions & 6 deletions

File tree

hcl2/hcl2.lark

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -74,8 +74,8 @@ object : "{" new_line_or_comment? (object_elem (new_line_and_or_comma object_ele
7474
object_elem : (identifier | expression) ( EQ | ":") expression
7575

7676

77-
heredoc_template : /<<(?P<heredoc>[a-zA-Z][a-zA-Z0-9._-]+)\n(?:.|\n)*?(?P=heredoc)/
78-
heredoc_template_trim : /<<-(?P<heredoc_trim>[a-zA-Z][a-zA-Z0-9._-]+)\n(?:.|\n)*?(?P=heredoc_trim)/
77+
heredoc_template : /<<(?P<heredoc>[a-zA-Z][a-zA-Z0-9._-]+)\n?(?:.|\n)*?\n\s*(?P=heredoc)\n/
78+
heredoc_template_trim : /<<-(?P<heredoc_trim>[a-zA-Z][a-zA-Z0-9._-]+)\n?(?:.|\n)*?\n\s*(?P=heredoc_trim)\n/
7979

8080
function_call : identifier "(" new_line_or_comment? arguments? new_line_or_comment? ")"
8181
arguments : (expression (new_line_or_comment* "," new_line_or_comment* expression)* ("," | "...")? new_line_or_comment*)

test/helpers/terraform-config-json/cloudwatch.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,15 +4,15 @@
44
"aws_cloudwatch_event_rule": {
55
"aws_cloudwatch_event_rule": {
66
"name": "name",
7-
"event_pattern": " {\n \"foo\": \"bar\"\n }"
7+
"event_pattern": " {\n \"foo\": \"bar\",\n \"foo2\": \"EOF_CONFIG\"\n }"
88
}
99
}
1010
},
1111
{
1212
"aws_cloudwatch_event_rule": {
1313
"aws_cloudwatch_event_rule2": {
1414
"name": "name",
15-
"event_pattern": "{\n \"foo\": \"bar\"\n}"
15+
"event_pattern": "{\n \"foo\": \"bar\",\n \"foo2\": \"EOF_CONFIG\"\n}"
1616
}
1717
}
1818
},

test/helpers/terraform-config/cloudwatch.tf

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,8 @@ resource "aws_cloudwatch_event_rule" "aws_cloudwatch_event_rule" {
22
name = "name"
33
event_pattern = <<EOF_CONFIG
44
{
5-
"foo": "bar"
5+
"foo": "bar",
6+
"foo2": "EOF_CONFIG"
67
}
78
EOF_CONFIG
89
}
@@ -11,7 +12,8 @@ resource "aws_cloudwatch_event_rule" "aws_cloudwatch_event_rule2" {
1112
name = "name"
1213
event_pattern = <<-EOF_CONFIG
1314
{
14-
"foo": "bar"
15+
"foo": "bar",
16+
"foo2": "EOF_CONFIG"
1517
}
1618
EOF_CONFIG
1719
}

0 commit comments

Comments
 (0)