зеркало из https://github.com/github/ruby.git
Allow value omission in Hash literals
`{x:, y:}` is a syntax sugar of `{x: x, y: y}`.
This commit is contained in:
Родитель
64e056a4c5
Коммит
c60dbcd1c5
9
parse.y
9
parse.y
|
@ -5617,6 +5617,15 @@ assoc : arg_value tASSOC arg_value
|
||||||
/*% %*/
|
/*% %*/
|
||||||
/*% ripper: assoc_new!($1, $2) %*/
|
/*% ripper: assoc_new!($1, $2) %*/
|
||||||
}
|
}
|
||||||
|
| tLABEL
|
||||||
|
{
|
||||||
|
/*%%%*/
|
||||||
|
NODE *val = gettable(p, $1, &@$);
|
||||||
|
if (!val) val = NEW_BEGIN(0, &@$);
|
||||||
|
$$ = list_append(p, NEW_LIST(NEW_LIT(ID2SYM($1), &@1), &@$), val);
|
||||||
|
/*% %*/
|
||||||
|
/*% ripper: assoc_new!($1, id_is_var(p, get_id($1)) ? var_ref!($1) : vcall!($1)) %*/
|
||||||
|
}
|
||||||
| tSTRING_BEG string_contents tLABEL_END arg_value
|
| tSTRING_BEG string_contents tLABEL_END arg_value
|
||||||
{
|
{
|
||||||
/*%%%*/
|
/*%%%*/
|
||||||
|
|
|
@ -2178,4 +2178,21 @@ class TestHash < Test::Unit::TestCase
|
||||||
end;
|
end;
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def test_value_omission
|
||||||
|
x = 1
|
||||||
|
y = 2
|
||||||
|
assert_equal({x: 1, y: 2}, {x:, y:})
|
||||||
|
assert_equal({one: 1, two: 2}, {one:, two:})
|
||||||
|
end
|
||||||
|
|
||||||
|
private
|
||||||
|
|
||||||
|
def one
|
||||||
|
1
|
||||||
|
end
|
||||||
|
|
||||||
|
def two
|
||||||
|
2
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
Загрузка…
Ссылка в новой задаче