diff options
author | nobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2017-10-22 01:37:36 +0000 |
---|---|---|
committer | nobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2017-10-22 01:37:36 +0000 |
commit | f644d3ef6789672fcae8b3da2e91655ad2cd736a (patch) | |
tree | c018735e538a5d60bbed0c3b1f67701096d542ef /parse.y | |
parent | 8bd7c8cbc88f8ca318fa9a7b3f7f1476cc1da965 (diff) | |
download | ruby-f644d3ef6789672fcae8b3da2e91655ad2cd736a.tar.gz |
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
Diffstat (limited to 'parse.y')
-rw-r--r-- | parse.y | 34 |
1 files changed, 34 insertions, 0 deletions
@@ -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; } |