1
0
Fork 0
mirror of https://github.com/ruby/ruby.git synced 2022-11-09 12:17:21 -05:00

parse.y: indent at '#'

* parse.y (parser_here_document): update indent at '#', which is
  not a space.  [ruby-core:83368] [Bug #14032]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@60213 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
nobu 2017-10-19 05:10:38 +00:00
parent 0e7936f896
commit 8b501f6d7f
3 changed files with 34 additions and 0 deletions

View file

@ -6732,6 +6732,12 @@ parser_here_document(struct parser_params *parser, NODE *here)
newtok();
if (c == '#') {
int t = parser_peek_variable_name(parser);
if (heredoc_line_indent != -1) {
if (heredoc_indent > heredoc_line_indent) {
heredoc_indent = heredoc_line_indent;
}
heredoc_line_indent = -1;
}
if (t) return t;
tokadd('#');
c = nextc();

View file

@ -70,4 +70,24 @@ class TestRipper::Lexer < Test::Unit::TestCase
]
assert_equal expect, Ripper.lex(src).map {|e| e[1]}
end
def test_expr_at_beginning_in_heredoc
src = <<~'E'
<<~B
a
#{1}
B
E
expect = %I[
on_heredoc_beg
on_nl
on_tstring_content
on_embexpr_beg
on_int
on_embexpr_end
on_tstring_content
on_heredoc_end
]
assert_equal expect, Ripper.lex(src).map {|e| e[1]}
end
end

View file

@ -659,6 +659,14 @@ e"
end
end
def test_dedented_heredoc_expr_at_beginning
result = " a\n" \
'#{1}'"\n"
expected = " a\n" \
'#{1}'"\n"
assert_dedented_heredoc(expected, result)
end
def test_lineno_after_heredoc
bug7559 = '[ruby-dev:46737]'
expected, _, actual = __LINE__, <<eom, __LINE__