merge revision(s) ce7a053475cbebfb2f3e5ed6614e0ba631541917,1cbb1f1720127b0b34b38c77e27b51b182008699: [Backport #16695]
Adjust sp for `x = false; y = (return until x unless x)` [Bug #16695] test/ruby/test_syntax.rb: avoid "warning: assigned but unused variable" git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_2_6@67925 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
parent
c08edc4eef
commit
8bfee86135
|
@ -2742,7 +2742,6 @@ iseq_peephole_optimize(rb_iseq_t *iseq, LINK_ELEMENT *list, const int do_tailcal
|
|||
goto again;
|
||||
}
|
||||
else if (IS_INSN_ID(diobj, leave)) {
|
||||
INSN *pop;
|
||||
/*
|
||||
* jump LABEL
|
||||
* ...
|
||||
|
@ -2750,7 +2749,6 @@ iseq_peephole_optimize(rb_iseq_t *iseq, LINK_ELEMENT *list, const int do_tailcal
|
|||
* leave
|
||||
* =>
|
||||
* leave
|
||||
* pop
|
||||
* ...
|
||||
* LABEL:
|
||||
* leave
|
||||
|
@ -2760,9 +2758,6 @@ iseq_peephole_optimize(rb_iseq_t *iseq, LINK_ELEMENT *list, const int do_tailcal
|
|||
iobj->insn_id = BIN(leave);
|
||||
iobj->operand_size = 0;
|
||||
iobj->insn_info = diobj->insn_info;
|
||||
/* adjust stack depth */
|
||||
pop = new_insn_body(iseq, diobj->insn_info.line_no, BIN(pop), 0);
|
||||
ELEM_INSERT_NEXT(&iobj->link, &pop->link);
|
||||
goto again;
|
||||
}
|
||||
else if (IS_INSN(iobj->link.prev) &&
|
||||
|
@ -5059,6 +5054,9 @@ compile_if(rb_iseq_t *iseq, LINK_ANCHOR *const ret, const NODE *const node, int
|
|||
branches);
|
||||
end_label = NEW_LABEL(line);
|
||||
ADD_INSNL(then_seq, line, jump, end_label);
|
||||
if (!popped) {
|
||||
ADD_INSN(then_seq, line, pop);
|
||||
}
|
||||
}
|
||||
ADD_SEQ(ret, then_seq);
|
||||
}
|
||||
|
|
|
@ -1265,6 +1265,15 @@ eom
|
|||
assert_nil obj.test
|
||||
end
|
||||
|
||||
def test_assignment_return_in_loop
|
||||
obj = Object.new
|
||||
def obj.test
|
||||
x = nil
|
||||
_y = (return until x unless x)
|
||||
end
|
||||
assert_nil obj.test, "[Bug #16695]"
|
||||
end
|
||||
|
||||
def test_method_call_location
|
||||
line = __LINE__+5
|
||||
e = assert_raise(NoMethodError) do
|
||||
|
|
Loading…
Reference in New Issue