diff options
| author | nagachika <nagachika@ruby-lang.org> | 2023-02-23 14:36:37 +0900 |
|---|---|---|
| committer | nagachika <nagachika@ruby-lang.org> | 2023-02-23 14:36:37 +0900 |
| commit | 536f5ba0d48c033e63398d1751aebd0a11bcc6ff (patch) | |
| tree | 9a9def632d54ae3b83565ce821b9baabd6e43c83 | |
| parent | d485a5dc783e23de28fb9eab7fc6c12ae5c35a23 (diff) | |
merge revision(s) 3ddf6ad4d2f6dae4caa00b8c407768c7062099a0: [Backport #18629]
Private local variables should shadow outer variables [Bug #18629]
---
parse.y | 3 ++-
test/ruby/test_parse.rb | 4 ++++
2 files changed, 6 insertions(+), 1 deletion(-)
| -rw-r--r-- | parse.y | 3 | ||||
| -rw-r--r-- | test/ruby/test_parse.rb | 4 | ||||
| -rw-r--r-- | version.h | 2 |
3 files changed, 7 insertions, 2 deletions
@@ -10984,9 +10984,9 @@ is_private_local_id(ID name) static int shadowing_lvar_0(struct parser_params *p, ID name) { - if (is_private_local_id(name)) return 1; if (dyna_in_block(p)) { if (dvar_curr(p, name)) { + if (is_private_local_id(name)) return 1; yyerror0("duplicated argument name"); } else if (dvar_defined(p, name) || local_id(p, name)) { @@ -10999,6 +10999,7 @@ shadowing_lvar_0(struct parser_params *p, ID name) } else { if (local_id(p, name)) { + if (is_private_local_id(name)) return 1; yyerror0("duplicated argument name"); } } diff --git a/test/ruby/test_parse.rb b/test/ruby/test_parse.rb index d697a29c1c..2841e20f6d 100644 --- a/test/ruby/test_parse.rb +++ b/test/ruby/test_parse.rb @@ -930,6 +930,10 @@ x = __ENCODING__ assert_no_warning(/shadowing outer local variable/) {eval("a=1; tap {|a|}")} end + def test_shadowing_private_local_variable + assert_equal 1, eval("_ = 1; [[2]].each{ |(_)| }; _") + end + def test_unused_variable o = Object.new assert_warning(/assigned but unused variable/) {o.instance_eval("def foo; a=1; nil; end")} @@ -11,7 +11,7 @@ # define RUBY_VERSION_MINOR RUBY_API_VERSION_MINOR #define RUBY_VERSION_TEENY 4 #define RUBY_RELEASE_DATE RUBY_RELEASE_YEAR_STR"-"RUBY_RELEASE_MONTH_STR"-"RUBY_RELEASE_DAY_STR -#define RUBY_PATCHLEVEL 190 +#define RUBY_PATCHLEVEL 191 #define RUBY_RELEASE_YEAR 2023 #define RUBY_RELEASE_MONTH 2 |
