1
0
Fork 0
mirror of https://github.com/ruby/ruby.git synced 2022-11-09 12:17:21 -05:00

parse.y: workaround for warnings

* parse.y (mark_lvar_used): enable workaround to suppress unused
  local variables.  [ruby-core:82656] [Bug #13872]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@60339 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
nobu 2017-10-22 01:37:36 +00:00
parent 8bd7c8cbc8
commit f644d3ef67
2 changed files with 35 additions and 0 deletions

34
parse.y
View file

@ -9927,6 +9927,33 @@ splat_array(NODE* node)
return 0;
}
static void
mark_lvar_used(struct parser_params *parser, NODE *rhs)
{
ID *vidp = NULL;
if (!rhs) return;
switch (nd_type(rhs)) {
case NODE_LASGN:
if (local_id_ref(rhs->nd_vid, vidp)) {
if (vidp) *vidp |= LVAR_USED;
}
break;
case NODE_DASGN:
case NODE_DASGN_CURR:
if (dvar_defined_ref(rhs->nd_vid, vidp)) {
if (vidp) *vidp |= LVAR_USED;
}
break;
#if 0
case NODE_MASGN:
for (rhs = rhs->nd_head; rhs; rhs = rhs->nd_next) {
mark_lvar_used(parser, rhs->nd_head);
}
break;
#endif
}
}
static NODE *
node_assign_gen(struct parser_params *parser, NODE *lhs, NODE *rhs, int column)
{
@ -10007,6 +10034,13 @@ value_expr_gen(struct parser_params *parser, NODE *node)
node = node->nd_2nd;
break;
case NODE_LASGN:
case NODE_DASGN:
case NODE_DASGN_CURR:
case NODE_MASGN:
mark_lvar_used(parser, node);
return TRUE;
default:
return TRUE;
}

View file

@ -890,6 +890,7 @@ x = __ENCODING__
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")}
end
def test_named_capture_conflict