mirror of
https://github.com/neovim/neovim.git
synced 2025-02-25 18:55:25 -06:00
vim-patch:7.4.1464
Problem: When the argument of sort() is zero or empty it fails.
Solution: Make zero work as documented. (suggested by Yasuhiro Matsumoto)
5131c144fe
This commit is contained in:
parent
82da7eed34
commit
b2d15fbebc
@ -15305,11 +15305,17 @@ static void do_sort_uniq(typval_T *argvars, typval_T *rettv, bool sort)
|
||||
}
|
||||
if (i == 1) {
|
||||
info.item_compare_ic = true;
|
||||
} else {
|
||||
} else if (argvars[1].v_type != VAR_NUMBER) {
|
||||
info.item_compare_func = get_tv_string(&argvars[1]);
|
||||
} else if (i != 0) {
|
||||
EMSG(_(e_invarg));
|
||||
goto theend;
|
||||
}
|
||||
if (info.item_compare_func != NULL) {
|
||||
if (STRCMP(info.item_compare_func, "n") == 0) {
|
||||
if (*info.item_compare_func == NUL) {
|
||||
// empty string means default sort
|
||||
info.item_compare_func = NULL;
|
||||
} else if (STRCMP(info.item_compare_func, "n") == 0) {
|
||||
info.item_compare_func = NULL;
|
||||
info.item_compare_numeric = true;
|
||||
} else if (STRCMP(info.item_compare_func, "N") == 0) {
|
||||
|
@ -229,7 +229,7 @@ static int included_patches[] = {
|
||||
// 1467 NA
|
||||
// 1466 NA
|
||||
// 1465 NA
|
||||
// 1464,
|
||||
1464,
|
||||
// 1463 NA
|
||||
// 1462 NA
|
||||
// 1461 NA
|
||||
|
@ -3,6 +3,8 @@ local clear = helpers.clear
|
||||
local eq = helpers.eq
|
||||
local eval = helpers.eval
|
||||
local execute = helpers.execute
|
||||
local exc_exec = helpers.exc_exec
|
||||
local neq = helpers.neq
|
||||
|
||||
describe('sort', function()
|
||||
before_each(clear)
|
||||
@ -39,4 +41,12 @@ describe('sort', function()
|
||||
execute('endfunc')
|
||||
eq({1, 3, 5}, eval("sort([3, 1, 5], 'Compare1')"))
|
||||
end)
|
||||
|
||||
it('default sort', function()
|
||||
-- docs say omitted, empty or zero argument sorts on string representation
|
||||
eq({'2', 1, 3.3}, eval('sort([3.3, 1, "2"])'))
|
||||
eq({'2', 1, 3.3}, eval([[sort([3.3, 1, "2"], '')]]))
|
||||
eq({'2', 1, 3.3}, eval('sort([3.3, 1, "2"], 0)'))
|
||||
neq(exc_exec('call sort([3.3, 1, "2"], 3)'):find('E474:'), nil)
|
||||
end)
|
||||
end)
|
||||
|
Loading…
Reference in New Issue
Block a user