diff options
| -rw-r--r-- | prism_compile.c | 1 | ||||
| -rw-r--r-- | test/ruby/test_compile_prism.rb | 26 |
2 files changed, 27 insertions, 0 deletions
diff --git a/prism_compile.c b/prism_compile.c index 7540a95ba7..a365946ba3 100644 --- a/prism_compile.c +++ b/prism_compile.c @@ -1377,6 +1377,7 @@ pm_scope_node_init(const pm_node_t *node, pm_scope_node_t *scope, pm_scope_node_ } scope->body = cast->body; scope->locals = cast->locals; + scope->local_depth_offset = 0; break; } case PM_CLASS_NODE: { diff --git a/test/ruby/test_compile_prism.rb b/test/ruby/test_compile_prism.rb index a707aa5a9c..339300a638 100644 --- a/test/ruby/test_compile_prism.rb +++ b/test/ruby/test_compile_prism.rb @@ -789,6 +789,23 @@ module Prism end end CODE + assert_prism_eval(<<~CODE) + def test + ensure + {}.each do |key, value| + {}[key] = value + end + end + CODE + assert_prism_eval(<<~CODE) + def test + a = 1 + ensure + {}.each do |key, value| + {}[key] = a + end + end + CODE end def test_NextNode @@ -924,6 +941,15 @@ module Prism a + b + c CODE assert_prism_eval("begin; rescue; end") + + assert_prism_eval(<<~CODE) + begin + rescue + args.each do |key, value| + tmp[key] = 1 + end + end + CODE end def test_RescueModiferNode |
