summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--parse.y4
-rw-r--r--test/ruby/test_ast.rb6
2 files changed, 10 insertions, 0 deletions
diff --git a/parse.y b/parse.y
index f31a3ed55e..8e1a6e4a46 100644
--- a/parse.y
+++ b/parse.y
@@ -13814,6 +13814,10 @@ new_bv(struct parser_params *p, ID name)
}
if (!shadowing_lvar_0(p, name)) return;
dyna_var(p, name);
+ ID *vidp = 0;
+ if (dvar_defined_ref(p, name, &vidp)) {
+ if (vidp) *vidp |= LVAR_USED;
+ }
}
static void
diff --git a/test/ruby/test_ast.rb b/test/ruby/test_ast.rb
index 90d19c3d68..29da607fc5 100644
--- a/test/ruby/test_ast.rb
+++ b/test/ruby/test_ast.rb
@@ -1232,6 +1232,12 @@ dummy
EXP
end
+ def test_unused_block_local_variable
+ assert_warning('') do
+ RubyVM::AbstractSyntaxTree.parse(%{->(; foo) {}})
+ end
+ end
+
def assert_error_tolerant(src, expected, keep_tokens: false)
begin
verbose_bak, $VERBOSE = $VERBOSE, false