diff options
| author | Kevin Newton <kddnewton@gmail.com> | 2024-06-01 13:50:27 -0400 |
|---|---|---|
| committer | git <svn-admin@ruby-lang.org> | 2024-06-03 21:12:36 +0000 |
| commit | 5502890a2fc2c98c4a073bde97d9667c59e8a2de (patch) | |
| tree | bd8f255d8b112c8c36565a03b51f78c105ec05fc /lib | |
| parent | 56301ba324e2bb8f1c90cfe8e25db8fcdcab14bd (diff) | |
[ruby/prism] Properly destructure procarg0 in parser translation
https://github.com/ruby/prism/commit/823e931ff2
Diffstat (limited to 'lib')
| -rw-r--r-- | lib/prism/translation/parser/compiler.rb | 27 |
1 files changed, 14 insertions, 13 deletions
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, |
