diff --git a/lib/prism/translation/parser/compiler.rb b/lib/prism/translation/parser/compiler.rb index 816c8841e8..df5917ab26 100644 --- a/lib/prism/translation/parser/compiler.rb +++ b/lib/prism/translation/parser/compiler.rb @@ -1390,12 +1390,12 @@ module Prism if node.requireds.any? node.requireds.each do |required| - if required.is_a?(RequiredParameterNode) - params << visit(required) - else - compiler = copy_compiler(in_destructure: true) - params << required.accept(compiler) - end + params << + if required.is_a?(RequiredParameterNode) + visit(required) + else + required.accept(copy_compiler(in_destructure: true)) + end end end @@ -1404,12 +1404,12 @@ module Prism if node.posts.any? node.posts.each do |post| - if post.is_a?(RequiredParameterNode) - params << visit(post) - else - compiler = copy_compiler(in_destructure: true) - params << post.accept(compiler) - end + params << + if post.is_a?(RequiredParameterNode) + visit(post) + else + post.accept(copy_compiler(in_destructure: true)) + end end end @@ -2004,7 +2004,8 @@ module Prism token(parameters.opening_loc), if procarg0?(parameters.parameters) parameter = parameters.parameters.requireds.first - [builder.procarg0(visit(parameter))].concat(visit_all(parameters.locals)) + visited = parameter.is_a?(RequiredParameterNode) ? visit(parameter) : parameter.accept(copy_compiler(in_destructure: true)) + [builder.procarg0(visited)].concat(visit_all(parameters.locals)) else visit(parameters) end, diff --git a/test/prism/ruby/parser_test.rb b/test/prism/ruby/parser_test.rb index d5787a0c16..d0e3288df7 100644 --- a/test/prism/ruby/parser_test.rb +++ b/test/prism/ruby/parser_test.rb @@ -52,11 +52,6 @@ module Prism "spanning_heredoc.txt", "spanning_heredoc_newlines.txt", "unescaping.txt", - "seattlerb/block_decomp_anon_splat_arg.txt", - "seattlerb/block_decomp_arg_splat_arg.txt", - "seattlerb/block_decomp_arg_splat.txt", - "seattlerb/block_decomp_splat.txt", - "seattlerb/block_paren_splat.txt", "seattlerb/bug190.txt", "seattlerb/heredoc_nested.txt", "seattlerb/heredoc_with_carriage_return_escapes_windows.txt", @@ -69,7 +64,6 @@ module Prism "seattlerb/pctW_lineno.txt", "seattlerb/regexp_esc_C_slash.txt", "seattlerb/TestRubyParserShared.txt", - "unparser/corpus/literal/block.txt", "unparser/corpus/literal/literal.txt", "unparser/corpus/literal/pattern.txt", "unparser/corpus/semantic/dstr.txt",