[ruby/prism] Fix parsing rescued exception via indexed assignment
Given this code ```ruby begin raise '42' rescue => A[] end ``` Prism fails with this backtrace ``` Error: test_unparser/corpus/literal/rescue.txt(Prism::ParserTest): NoMethodError: undefined method `arguments' for nil prism/lib/prism/translation/parser/compiler.rb:1055:in `visit_index_target_node' prism/lib/prism/node.rb:9636:in `accept' prism/lib/prism/compiler.rb:30:in `visit' prism/lib/prism/translation/parser/compiler.rb:218:in `visit_begin_node' ``` Seems like ```diff - visit_all(node.arguments.arguments), + visit_all(node.arguments&.arguments || []), ``` fixes the problem. https://github.com/ruby/prism/commit/76d01aeb6c
This commit is contained in:
parent
a35a101b4c
commit
543dd77cc3
@ -1052,7 +1052,7 @@ module Prism
|
|||||||
builder.index_asgn(
|
builder.index_asgn(
|
||||||
visit(node.receiver),
|
visit(node.receiver),
|
||||||
token(node.opening_loc),
|
token(node.opening_loc),
|
||||||
visit_all(node.arguments.arguments),
|
visit_all(node.arguments&.arguments || []),
|
||||||
token(node.closing_loc),
|
token(node.closing_loc),
|
||||||
)
|
)
|
||||||
end
|
end
|
||||||
|
@ -33,3 +33,7 @@ end
|
|||||||
foo if bar rescue baz
|
foo if bar rescue baz
|
||||||
|
|
||||||
z = x y rescue c d
|
z = x y rescue c d
|
||||||
|
|
||||||
|
begin
|
||||||
|
rescue => A[]
|
||||||
|
end
|
||||||
|
Loading…
x
Reference in New Issue
Block a user