Actions
Bug #15932
closedwrong "void value expression" error for 'next' or 'break' statements inside an 'if' assignment
Description
When a 'next' or 'break' statement for block/loop control is placed inside an 'if' assignment, the parser outputs an error "void value expression". The same parsing error raises for the ternary operator in the same conditions.
I think, the the correct behavior should be consistent with the behavior of the 'case' statement, that is parsing such a code without errors and leaving the right-side variable with 'nil' value.
Examples of code giving a "void value expression" error:
begin
a = if false
'A'
else
next
end
end while false
begin
a = false ? 'A' : next
end while false
Example of code running without errors:
begin
a = case false
when true
'A'
else
next
end
end while false
begin
a = (false or next)
end while false
Updated by cvss (Kirill Vechera) over 5 years ago
- ruby -v changed from 1.8.7 .. 2.7.0preview1 to 1.8.7, 2.7.0preview1
Updated by nobu (Nobuyoshi Nakada) over 5 years ago
- Backport changed from 2.4: UNKNOWN, 2.5: UNKNOWN, 2.6: UNKNOWN to 2.4: REQUIRED, 2.5: REQUIRED, 2.6: REQUIRED
Updated by nobu (Nobuyoshi Nakada) over 5 years ago
- Status changed from Open to Closed
Applied in changeset git|01b3a3804334be19d013526d3edde2b84399ae43.
Fix wrong "void value expression" error
- parse.y (value_expr_check): if either of
then
orelse
statements is not a void value expression, the wholeif
is not
also a void value expression. [Bug #15932]
Updated by jeremyevans0 (Jeremy Evans) over 5 years ago
- Related to Bug #11143: it should always be possible to return from an if added
Updated by usa (Usaku NAKAMURA) over 3 years ago
- Backport changed from 2.4: REQUIRED, 2.5: REQUIRED, 2.6: REQUIRED to 2.4: REQUIRED, 2.5: DONE, 2.6: REQUIRED
Backported into ruby_2_6 at r67903.
Actions
Like0
Like0Like0Like0Like0Like0