From 207788466eedfdefcf09fdc5c6217547b5ce4ed1 Mon Sep 17 00:00:00 2001 From: Nobuyoshi Nakada Date: Wed, 10 Apr 2024 22:44:33 +0900 Subject: [PATCH] [Bug #20417] Block local variables do not need to warn about unused --- parse.y | 4 ++++ test/ruby/test_ast.rb | 6 ++++++ 2 files changed, 10 insertions(+) diff --git a/parse.y b/parse.y index f31a3ed55ec652..8e1a6e4a46d071 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 90d19c3d68eb74..29da607fc5daa1 100644 --- a/test/ruby/test_ast.rb +++ b/test/ruby/test_ast.rb @@ -1232,6 +1232,12 @@ def test_with_bom 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