summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--parse.y4
-rw-r--r--test/ruby/test_syntax.rb12
2 files changed, 15 insertions, 1 deletions
diff --git a/parse.y b/parse.y
index 5dec8e01f9..5ff8394c27 100644
--- a/parse.y
+++ b/parse.y
@@ -8578,6 +8578,10 @@ parser_update_heredoc_indent(struct parser_params *p, int c)
}
p->heredoc_line_indent = -1;
}
+ else {
+ /* Whitespace only line has no indentation */
+ p->heredoc_line_indent = 0;
+ }
}
return FALSE;
}
diff --git a/test/ruby/test_syntax.rb b/test/ruby/test_syntax.rb
index 8bdac2ebd1..7b894eee79 100644
--- a/test/ruby/test_syntax.rb
+++ b/test/ruby/test_syntax.rb
@@ -889,6 +889,16 @@ e"
assert_dedented_heredoc(expect, result)
end
+ def test_dedented_heredoc_with_leading_blank_line
+ # the blank line has six leading spaces
+ result = " \n" \
+ " b\n"
+ expect = " \n" \
+ "b\n"
+ assert_dedented_heredoc(expect, result)
+ end
+
+
def test_dedented_heredoc_with_blank_more_indented_line_escaped
result = " a\n" \
"\\ \\ \\ \\ \\ \\ \n" \
@@ -996,7 +1006,7 @@ eom
end
def test_dedented_heredoc_concatenation
- assert_equal("\n0\n1", eval("<<~0 '1'\n \n0\#{}\n0"))
+ assert_equal(" \n0\n1", eval("<<~0 '1'\n \n0\#{}\n0"))
end
def test_heredoc_mixed_encoding