diff options
| author | Kevin Newton <kddnewton@gmail.com> | 2024-03-05 08:10:57 -0500 |
|---|---|---|
| committer | git <svn-admin@ruby-lang.org> | 2024-03-06 16:42:42 +0000 |
| commit | 524e93b84e1a08e5f8dabaad123cecd6b85cf82a (patch) | |
| tree | 1ad737826759f1513d7b0bb475d76386f4e9c7a4 /lib | |
| parent | 3bdb0fecd103a5901a7ee1ab7ff6105a4e916fe5 (diff) | |
[ruby/prism] Implement find pattern for ripper translation
https://github.com/ruby/prism/commit/ef9dca2a4c
Diffstat (limited to 'lib')
| -rw-r--r-- | lib/prism/translation/ripper.rb | 21 |
1 files changed, 20 insertions, 1 deletions
diff --git a/lib/prism/translation/ripper.rb b/lib/prism/translation/ripper.rb index 0872ed9f9e..5f6200cbe8 100644 --- a/lib/prism/translation/ripper.rb +++ b/lib/prism/translation/ripper.rb @@ -931,7 +931,26 @@ module Prism # foo => [*, bar, *] # ^^^^^^^^^^^ def visit_find_pattern_node(node) - raise NoMethodError, __method__ + constant = visit(node.constant) + left = + if node.left.expression.nil? + bounds(node.left.location) + on_var_field(nil) + else + visit(node.left.expression) + end + + requireds = visit_all(node.requireds) if node.requireds.any? + right = + if node.right.expression.nil? + bounds(node.right.location) + on_var_field(nil) + else + visit(node.right.expression) + end + + bounds(node.location) + on_fndptn(constant, left, requireds, right) end # if foo .. bar; end |
