From 524e93b84e1a08e5f8dabaad123cecd6b85cf82a Mon Sep 17 00:00:00 2001 From: Kevin Newton Date: Tue, 5 Mar 2024 08:10:57 -0500 Subject: [ruby/prism] Implement find pattern for ripper translation https://github.com/ruby/prism/commit/ef9dca2a4c --- lib/prism/translation/ripper.rb | 21 ++++++++++++++++++++- test/prism/ripper_test.rb | 3 --- 2 files changed, 20 insertions(+), 4 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 diff --git a/test/prism/ripper_test.rb b/test/prism/ripper_test.rb index 4636fa6d58..9f6a8a3c9f 100644 --- a/test/prism/ripper_test.rb +++ b/test/prism/ripper_test.rb @@ -371,8 +371,6 @@ module Prism seattlerb/case_in.txt seattlerb/case_in_37.txt seattlerb/case_in_else.txt - seattlerb/case_in_find.txt - seattlerb/case_in_find_array.txt seattlerb/case_in_hash_pat.txt seattlerb/case_in_hash_pat_assign.txt seattlerb/case_in_hash_pat_paren_assign.txt @@ -590,7 +588,6 @@ module Prism unparser/corpus/literal/rescue.txt unparser/corpus/literal/send.txt unparser/corpus/literal/since/27.txt - unparser/corpus/literal/since/30.txt unparser/corpus/literal/since/31.txt unparser/corpus/literal/since/32.txt unparser/corpus/literal/super.txt -- cgit v1.2.3