Skip to content

Commit

Permalink
[ruby/prism] Better handle splat in MRHS
Browse files Browse the repository at this point in the history
  • Loading branch information
kddnewton authored and matzbot committed Mar 6, 2024
1 parent cdb47b1 commit f75aa76
Show file tree
Hide file tree
Showing 2 changed files with 3 additions and 5 deletions.
5 changes: 3 additions & 2 deletions lib/prism/translation/ripper.rb
Expand Up @@ -2812,13 +2812,14 @@ def visit_write_value(node)
length = elements.length

bounds(elements.first.location)
elements.each_with_index.inject(on_args_new) do |args, (element, index)|
elements.each_with_index.inject((elements.first.is_a?(SplatNode) && length == 1) ? on_mrhs_new : on_args_new) do |args, (element, index)|
arg = visit(element)
bounds(element.location)

if index == length - 1
if element.is_a?(SplatNode)
on_mrhs_add_star(on_mrhs_new_from_args(args), arg)
mrhs = index == 0 ? args : on_mrhs_new_from_args(args)
on_mrhs_add_star(mrhs, arg)
else
on_mrhs_add(on_mrhs_new_from_args(args), arg)
end
Expand Down
3 changes: 0 additions & 3 deletions test/prism/ripper_test.rb
Expand Up @@ -88,15 +88,12 @@ class RipperTest < TestCase
unparser/corpus/literal/while.txt
unparser/corpus/semantic/dstr.txt
unparser/corpus/semantic/while.txt
variables.txt
whitequark/asgn_mrhs.txt
whitequark/bug_480.txt
whitequark/dedenting_heredoc.txt
whitequark/dedenting_interpolating_heredoc_fake_line_continuation.txt
whitequark/dedenting_non_interpolating_heredoc_line_continuation.txt
whitequark/empty_stmt.txt
whitequark/if_elsif.txt
whitequark/masgn_splat.txt
whitequark/parser_bug_640.txt
whitequark/parser_drops_truncated_parts_of_squiggly_heredoc.txt
whitequark/parser_slash_slash_n_escaping_in_literals.txt
Expand Down

0 comments on commit f75aa76

Please sign in to comment.