Skip to content

Commit 1807609

Browse files
committed
[Bug #21669] Remove invalid marking local variable assignment mark
1 parent f9f1249 commit 1807609

File tree

2 files changed

+11
-7
lines changed

2 files changed

+11
-7
lines changed

parse.y

Lines changed: 1 addition & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -13900,7 +13900,7 @@ value_expr_check(struct parser_params *p, NODE *node)
1390013900
case NODE_BLOCK:
1390113901
while (RNODE_BLOCK(node)->nd_next) {
1390213902
vn = value_expr_check(p, RNODE_BLOCK(node)->nd_head);
13903-
if (vn) return vn;
13903+
if (vn && !void_node) void_node = vn;
1390413904
node = RNODE_BLOCK(node)->nd_next;
1390513905
}
1390613906
node = RNODE_BLOCK(node)->nd_head;
@@ -13929,12 +13929,6 @@ value_expr_check(struct parser_params *p, NODE *node)
1392913929
node = RNODE_AND(node)->nd_1st;
1393013930
break;
1393113931

13932-
case NODE_LASGN:
13933-
case NODE_DASGN:
13934-
case NODE_MASGN:
13935-
mark_lvar_used(p, node);
13936-
return NULL;
13937-
1393813932
default:
1393913933
return NULL;
1394013934
}

test/ruby/test_parse.rb

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1148,6 +1148,16 @@ def test_unused_variable
11481148
assert_warning(/assigned but unused variable/) {o.instance_eval("def bar2; a, = 1, 2; end")}
11491149
assert_warning('') {o.instance_eval("def marg1(a); nil; end")}
11501150
assert_warning('') {o.instance_eval("def marg2((a)); nil; end")}
1151+
1152+
assert_warning(/assigned but unused variable/) {o.instance_eval("#{<<~"{#"}\n#{<<~'};'}")}
1153+
{#
1154+
def zot
1155+
block ||= begin
1156+
foo = nil
1157+
itself
1158+
end
1159+
end
1160+
};
11511161
end
11521162

11531163
def test_parsing_begin_statement_inside_method_definition

0 commit comments

Comments
 (0)