summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKevin Newton <kddnewton@gmail.com>2024-03-05 08:15:51 -0500
committergit <svn-admin@ruby-lang.org>2024-03-06 16:42:43 +0000
commit1d5f05bd53e72e9fe8259407eabd125925bfe7fc (patch)
tree363139b2f65b9b1484389b86f4fcc3bf44890466
parent17111084d4f01840db3d0c76c250ff4430be73bf (diff)
[ruby/prism] Implement for loop for ripper translation
https://github.com/ruby/prism/commit/2d635ce46b
-rw-r--r--lib/prism/translation/ripper.rb15
-rw-r--r--test/prism/ripper_test.rb1
2 files changed, 13 insertions, 3 deletions
diff --git a/lib/prism/translation/ripper.rb b/lib/prism/translation/ripper.rb
index e50aec1d15..5f199feeba 100644
--- a/lib/prism/translation/ripper.rb
+++ b/lib/prism/translation/ripper.rb
@@ -983,13 +983,24 @@ module Prism
# for foo in bar do end
# ^^^^^^^^^^^^^^^^^^^^^
def visit_for_node(node)
- raise NoMethodError, __method__
+ index = visit(node.index)
+ collection = visit(node.collection)
+ statements =
+ if node.statements.nil?
+ bounds(node.location)
+ on_stmts_add(on_stmts_new, on_void_stmt)
+ else
+ visit(node.statements)
+ end
+
+ bounds(node.location)
+ on_for(index, collection, statements)
end
# def foo(...); bar(...); end
# ^^^
def visit_forwarding_arguments_node(node)
-
+ raise NoMethodError, __method__
end
# def foo(...); end
diff --git a/test/prism/ripper_test.rb b/test/prism/ripper_test.rb
index 48dab05d73..ecf6fc44a9 100644
--- a/test/prism/ripper_test.rb
+++ b/test/prism/ripper_test.rb
@@ -656,7 +656,6 @@ module Prism
whitequark/endless_method_forwarded_args_legacy.txt
whitequark/endless_method_with_rescue_mod.txt
whitequark/endless_method_without_args.txt
- whitequark/for.txt
whitequark/for_mlhs.txt
whitequark/forward_arg.txt
whitequark/forward_arg_with_open_args.txt