diff options
-rw-r--r-- | ChangeLog | 6 | ||||
-rw-r--r-- | parse.y | 2 | ||||
-rw-r--r-- | test/ruby/test_syntax.rb | 9 |
3 files changed, 16 insertions, 1 deletions
@@ -1,3 +1,9 @@ +Fri Jan 15 16:12:10 2016 Nobuyoshi Nakada <nobu@ruby-lang.org> + + * parse.y (string1): reset heredoc indent fore each string leteral + so that concatenated string would not be dedented. + [ruby-core:72857] [Bug #11990] + Fri Jan 15 09:25:07 2016 SHIBATA Hiroshi <hsbt@ruby-lang.org> * common.mk: test-sample was changed to test-basic. @@ -3912,7 +3912,6 @@ strings : string else { node = evstr2dstr(node); } - heredoc_indent = 0; $$ = node; /*% $$ = $1; @@ -3935,6 +3934,7 @@ string : tCHAR string1 : tSTRING_BEG string_contents tSTRING_END { heredoc_dedent($2); + heredoc_indent = 0; /*%%%*/ $$ = $2; /*% diff --git a/test/ruby/test_syntax.rb b/test/ruby/test_syntax.rb index 1daf7b2d91..a81e489222 100644 --- a/test/ruby/test_syntax.rb +++ b/test/ruby/test_syntax.rb @@ -580,6 +580,15 @@ e" assert_dedented_heredoc(expect, result) end + def test_dedented_heredoc_with_concatenation + bug11990 = '[ruby-core:72857] [Bug #11990] concatenated string should not be dedented' + %w[eos "eos" 'eos'].each do |eos| + assert_equal("x\n y", + eval("<<~#{eos} ' y'\n x\neos\n"), + "#{bug11990} with #{eos}") + end + end + def test_lineno_after_heredoc bug7559 = '[ruby-dev:46737]' expected, _, actual = __LINE__, <<eom, __LINE__ |