summaryrefslogtreecommitdiff
path: root/parse.y
diff options
context:
space:
mode:
authornobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2017-10-22 01:37:36 +0000
committernobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2017-10-22 01:37:36 +0000
commitf644d3ef6789672fcae8b3da2e91655ad2cd736a (patch)
treec018735e538a5d60bbed0c3b1f67701096d542ef /parse.y
parent8bd7c8cbc88f8ca318fa9a7b3f7f1476cc1da965 (diff)
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.y34
1 files changed, 34 insertions, 0 deletions
diff --git a/parse.y b/parse.y
index 01047a8dc5..028f872161 100644
--- a/parse.y
+++ b/parse.y
@@ -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;
}