Remove duplicate value checks on `mrhs` which always has the value

This commit is contained in:
Nobuyoshi Nakada 2021-10-08 00:10:32 +09:00
Родитель 80e2242da6
Коммит 8057129da6
Не найден ключ, соответствующий данной подписи
Идентификатор ключа GPG: 7CD2805BFA3770C6
2 изменённых файлов: 8 добавлений и 5 удалений

Просмотреть файл

@ -1586,7 +1586,6 @@ stmt : keyword_alias fitem {SET_LEX_STATE(EXPR_FNAME|EXPR_FITEM);} fitem
| lhs '=' lex_ctxt mrhs
{
/*%%%*/
value_expr($4);
$$ = node_assign(p, $1, $4, $3, &@$);
/*% %*/
/*% ripper: assign!($1, $4) %*/
@ -1595,7 +1594,6 @@ stmt : keyword_alias fitem {SET_LEX_STATE(EXPR_FNAME|EXPR_FITEM);} fitem
{
/*%%%*/
YYLTYPE loc = code_loc_gen(&@5, &@6);
value_expr($4);
$$ = node_assign(p, $1, NEW_RESCUE($4, NEW_RESBODY(0, remove_begin($6), 0, &loc), 0, &@$), $3, &@$);
/*% %*/
/*% ripper: massign!($1, rescue_mod!($4, $6)) %*/
@ -2861,6 +2859,7 @@ opt_block_arg : ',' block_arg
}
;
/* value */
args : arg_value
{
/*%%%*/
@ -2891,10 +2890,12 @@ args : arg_value
}
;
/* value */
mrhs_arg : mrhs
| arg_value
;
/* value */
mrhs : args ',' arg_value
{
/*%%%*/

Просмотреть файл

@ -1231,10 +1231,12 @@ x = __ENCODING__
assert_valid_syntax('let () { m(a) do; end }')
end
def test_void_value_in_command_rhs
def test_void_value_in_rhs
w = "void value expression"
ex = assert_syntax_error("x = return 1", w)
assert_equal(1, ex.message.scan(w).size, "same #{w.inspect} warning should be just once")
["x = return 1", "x = return, 1", "x = 1, return", "x, y = return"].each do |code|
ex = assert_syntax_error(code, w)
assert_equal(1, ex.message.scan(w).size, ->{"same #{w.inspect} warning should be just once\n#{w.message}"})
end
end
def eval_separately(code)