summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--prism_compile.c1
-rw-r--r--test/ruby/test_compile_prism.rb26
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