Maintenance Ruby 3.4 gets fixes, but no new features. Switch to Ruby 4.0 →
instance method
Prism::Translation::Ripper#visit_write_value
visit_write_value(node)
lib/prism/translation/ripper.rb
View on GitHub ↗
# File tmp/rubies/ruby-3.4.1/lib/prism/translation/ripper.rb, line 3337
def visit_write_value(node)
if node.is_a?(ArrayNode) && node.opening_loc.nil?
elements = node.elements
length = elements.length
bounds(elements.first.location)
elements.each_with_index.inject((elements.first.is_a?(SplatNode) && length == 1) ? on_mrhs_new : on_args_new) do |args, (element, index)|
arg = visit(element)
bounds(element.location)
if index == length - 1
if element.is_a?(SplatNode)
mrhs = index == 0 ? args : on_mrhs_new_from_args(args)
on_mrhs_add_star(mrhs, arg)
else
on_mrhs_add(on_mrhs_new_from_args(args), arg)
end
else
case element
when BlockArgumentNode
on_args_add_block(args, arg)
when SplatNode
on_args_add_star(args, arg)
else
on_args_add(args, arg)
end
end
end
else
visit(node)
end
end
Visit a node that represents a write value. This is used to handle the special case of an implicit array that is generated without brackets.