diff --git a/lib/prism/translation/ripper.rb b/lib/prism/translation/ripper.rb index ea1a1882e..ae7ba6d53 100644 --- a/lib/prism/translation/ripper.rb +++ b/lib/prism/translation/ripper.rb @@ -248,7 +248,6 @@ def visit_array_node(node) # Visit a list of elements, like the elements of an array or arguments. private def visit_arguments(elements) bounds(elements.first.location) - elements.inject(on_args_new) do |args, element| arg = visit(element) bounds(element.location) @@ -626,10 +625,12 @@ def visit_call_node(node) end arguments = - if arguments.any? + if arguments.length == 1 && arguments.first.is_a?(ForwardingArgumentsNode) + visit(arguments.first) + elsif arguments.any? args = visit_arguments(arguments) - if block.is_a?(BlockArgumentNode) + if block.is_a?(BlockArgumentNode) || arguments.last.is_a?(ForwardingArgumentsNode) args else bounds(arguments.first.location) @@ -1208,7 +1209,8 @@ def visit_for_node(node) # def foo(...); bar(...); end # ^^^ def visit_forwarding_arguments_node(node) - raise NoMethodError, __method__ + bounds(node.location) + on_args_forward end # def foo(...); end diff --git a/test/prism/ripper_test.rb b/test/prism/ripper_test.rb index 1883fc1e4..50785b4ba 100644 --- a/test/prism/ripper_test.rb +++ b/test/prism/ripper_test.rb @@ -90,7 +90,6 @@ class RipperTest < TestCase seattlerb/defn_arg_forward_args.txt seattlerb/defn_args_forward_args.txt seattlerb/defn_forward_args.txt - seattlerb/defn_forward_args__no_parens.txt seattlerb/defn_kwarg_lvar.txt seattlerb/defn_oneliner_eq2.txt seattlerb/defn_oneliner_rescue.txt @@ -311,11 +310,9 @@ class RipperTest < TestCase whitequark/empty_stmt.txt whitequark/endless_method.txt whitequark/endless_method_command_syntax.txt - whitequark/endless_method_forwarded_args_legacy.txt whitequark/endless_method_with_rescue_mod.txt whitequark/endless_method_without_args.txt whitequark/forward_arg.txt - whitequark/forward_arg_with_open_args.txt whitequark/forward_args_legacy.txt whitequark/forwarded_argument_with_kwrestarg.txt whitequark/forwarded_argument_with_restarg.txt