diff options
author | viralpraxis <[email protected]> | 2025-04-10 11:56:25 +0300 |
---|---|---|
committer | git <[email protected]> | 2025-04-12 17:43:57 +0000 |
commit | 543dd77cc39d16a45693d35af670995f7e66ce36 (patch) | |
tree | ba848f882153f6965f9d2a0e287f9d28d4449e29 /test | |
parent | a35a101b4cd393aa4947eea872c71f0f7f0cd3f0 (diff) |
[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
Diffstat (limited to 'test')
-rw-r--r-- | test/prism/fixtures/rescue.txt | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/test/prism/fixtures/rescue.txt b/test/prism/fixtures/rescue.txt index 99170fbe0f..f436463029 100644 --- a/test/prism/fixtures/rescue.txt +++ b/test/prism/fixtures/rescue.txt @@ -33,3 +33,7 @@ end foo if bar rescue baz z = x y rescue c d + +begin +rescue => A[] +end |