summaryrefslogtreecommitdiff
path: root/lib/prism/translation/ripper.rb
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 /lib/prism/translation/ripper.rb
parent17111084d4f01840db3d0c76c250ff4430be73bf (diff)
[ruby/prism] Implement for loop for ripper translation
https://github.com/ruby/prism/commit/2d635ce46b
Diffstat (limited to 'lib/prism/translation/ripper.rb')
-rw-r--r--lib/prism/translation/ripper.rb15
1 files changed, 13 insertions, 2 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