diff options
author | Nobuyoshi Nakada <nobu@ruby-lang.org> | 2019-06-29 18:45:24 +0900 |
---|---|---|
committer | Nobuyoshi Nakada <nobu@ruby-lang.org> | 2019-06-29 18:45:24 +0900 |
commit | 27723b699b5fbad49a7bb16936d5a7d8e80376ba (patch) | |
tree | 2fe68720040ecc0221d36ff4c0d1823f942550b4 | |
parent | a17fba6989d6f183275f0d9fa9dc0e43781bfe54 (diff) | |
download | ruby-27723b699b5fbad49a7bb16936d5a7d8e80376ba.tar.gz |
Should not warn massign parameters as unused
-rw-r--r-- | parse.y | 2 | ||||
-rw-r--r-- | test/ruby/test_parse.rb | 10 |
2 files changed, 8 insertions, 4 deletions
@@ -404,6 +404,7 @@ static NODE *literal_concat(struct parser_params*,NODE*,NODE*,const YYLTYPE*); static NODE *new_evstr(struct parser_params*,NODE*,const YYLTYPE*); static NODE *evstr2dstr(struct parser_params*,NODE*); static NODE *splat_array(NODE*); +static void mark_lvar_used(struct parser_params *p, NODE *rhs); static NODE *call_bin_op(struct parser_params*,NODE*,ID,NODE*,const YYLTYPE*,const YYLTYPE*); static NODE *call_uni_op(struct parser_params*,NODE*,ID,const YYLTYPE*,const YYLTYPE*); @@ -3150,6 +3151,7 @@ f_marg : f_norm_arg { /*%%%*/ $$ = assignable(p, $1, 0, &@$); + mark_lvar_used(p, $$); /*% %*/ /*% ripper: assignable(p, $1) %*/ } diff --git a/test/ruby/test_parse.rb b/test/ruby/test_parse.rb index ff62aef785..b63f170981 100644 --- a/test/ruby/test_parse.rb +++ b/test/ruby/test_parse.rb @@ -961,10 +961,12 @@ x = __ENCODING__ assert_warning(/assigned but unused variable/) {o.instance_eval("def foo; a=1; nil; end")} assert_warning(/assigned but unused variable/) {o.instance_eval("def bar; a=1; a(); end")} a = "\u{3042}" - assert_warning(/#{a}/) {o.instance_eval("def foo; #{a}=1; nil; end")} - o = Object.new - assert_warning(/assigned but unused variable/) {o.instance_eval("def foo; tap {a=1; a()}; end")} - assert_warning('') {o.instance_eval("def bar; a=a=1; nil; end")} + assert_warning(/#{a}/) {o.instance_eval("def foo0; #{a}=1; nil; end")} + assert_warning(/assigned but unused variable/) {o.instance_eval("def foo1; tap {a=1; a()}; end")} + assert_warning('') {o.instance_eval("def bar1; a=a=1; nil; end")} + assert_warning(/assigned but unused variable/) {o.instance_eval("def bar2; a, = 1, 2; end")} + assert_warning('') {o.instance_eval("def marg1(a); nil; end")} + assert_warning('') {o.instance_eval("def marg2((a)); nil; end")} end def test_named_capture_conflict |