From 8331874218c989c29e8d80bf41cc54977538f392 Mon Sep 17 00:00:00 2001 From: Kevin Newton Date: Wed, 6 Mar 2024 00:46:34 -0500 Subject: [PATCH] Better handle splat in MRHS --- lib/prism/translation/ripper.rb | 5 +++-- test/prism/ripper_test.rb | 3 --- 2 files changed, 3 insertions(+), 5 deletions(-) diff --git a/lib/prism/translation/ripper.rb b/lib/prism/translation/ripper.rb index 79eaac3bd0b..97274cabf95 100644 --- a/lib/prism/translation/ripper.rb +++ b/lib/prism/translation/ripper.rb @@ -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 diff --git a/test/prism/ripper_test.rb b/test/prism/ripper_test.rb index 9b633c37cbc..3dc900ff145 100644 --- a/test/prism/ripper_test.rb +++ b/test/prism/ripper_test.rb @@ -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