1
0
Fork 0
mirror of https://github.com/ruby/ruby.git synced 2022-11-09 12:17:21 -05:00

Fix wrong "void value expression" error

* parse.y (value_expr_check): `then` or `else` only `if` is not a
  void value expression, as the counterpart is evaluated as `nil`.
  [Bug #15932]
This commit is contained in:
Nobuyoshi Nakada 2019-06-17 22:30:52 +09:00
parent 01b3a38043
commit c8e9e0b74b
No known key found for this signature in database
GPG key ID: 4BC7D6DF58D8DF60
2 changed files with 4 additions and 4 deletions

View file

@ -10552,12 +10552,10 @@ value_expr_check(struct parser_params *p, NODE *node)
case NODE_IF:
case NODE_UNLESS:
if (!node->nd_body) {
node = node->nd_else;
break;
return NULL;
}
else if (!node->nd_else) {
node = node->nd_body;
break;
return NULL;
}
vn = value_expr_check(p, node->nd_body);
if (!vn) return NULL;

View file

@ -1392,6 +1392,8 @@ eom
mesg = /void value expression/
assert_syntax_error("tap {a = (true ? next : break)}", mesg)
assert_valid_syntax("tap {a = (true ? true : break)}")
assert_valid_syntax("tap {a = (break if false)}")
assert_valid_syntax("tap {a = (break unless true)}")
end
private