mirror of
https://github.com/vim/vim.git
synced 2025-09-26 04:04:07 -04:00
patch 8.2.2466: max() and min() can give many error messages
Problem: Max() and min() can give many error messages. Solution: Bail out at the first error. (closes #1039, closes #7778)
This commit is contained in:
@@ -6769,12 +6769,16 @@ max_min(typval_T *argvars, typval_T *rettv, int domax)
|
|||||||
if (li != NULL)
|
if (li != NULL)
|
||||||
{
|
{
|
||||||
n = tv_get_number_chk(&li->li_tv, &error);
|
n = tv_get_number_chk(&li->li_tv, &error);
|
||||||
|
if (error)
|
||||||
|
return; // type error; errmsg already given
|
||||||
for (;;)
|
for (;;)
|
||||||
{
|
{
|
||||||
li = li->li_next;
|
li = li->li_next;
|
||||||
if (li == NULL)
|
if (li == NULL)
|
||||||
break;
|
break;
|
||||||
i = tv_get_number_chk(&li->li_tv, &error);
|
i = tv_get_number_chk(&li->li_tv, &error);
|
||||||
|
if (error)
|
||||||
|
return; // type error; errmsg already given
|
||||||
if (domax ? i > n : i < n)
|
if (domax ? i > n : i < n)
|
||||||
n = i;
|
n = i;
|
||||||
}
|
}
|
||||||
@@ -6799,6 +6803,8 @@ max_min(typval_T *argvars, typval_T *rettv, int domax)
|
|||||||
{
|
{
|
||||||
--todo;
|
--todo;
|
||||||
i = tv_get_number_chk(&HI2DI(hi)->di_tv, &error);
|
i = tv_get_number_chk(&HI2DI(hi)->di_tv, &error);
|
||||||
|
if (error)
|
||||||
|
return; // type error; errmsg already given
|
||||||
if (first)
|
if (first)
|
||||||
{
|
{
|
||||||
n = i;
|
n = i;
|
||||||
@@ -6812,7 +6818,8 @@ max_min(typval_T *argvars, typval_T *rettv, int domax)
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
semsg(_(e_listdictarg), domax ? "max()" : "min()");
|
semsg(_(e_listdictarg), domax ? "max()" : "min()");
|
||||||
rettv->vval.v_number = error ? 0 : n;
|
|
||||||
|
rettv->vval.v_number = n;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@@ -124,6 +124,10 @@ func Test_max()
|
|||||||
|
|
||||||
call assert_fails('call max(1)', 'E712:')
|
call assert_fails('call max(1)', 'E712:')
|
||||||
call assert_fails('call max(v:none)', 'E712:')
|
call assert_fails('call max(v:none)', 'E712:')
|
||||||
|
|
||||||
|
" check we only get one error
|
||||||
|
call assert_fails('call max([#{}, [1]])', ['E728:', 'E728:'])
|
||||||
|
call assert_fails('call max(#{a: {}, b: [1]})', ['E728:', 'E728:'])
|
||||||
endfunc
|
endfunc
|
||||||
|
|
||||||
func Test_min()
|
func Test_min()
|
||||||
@@ -137,6 +141,10 @@ func Test_min()
|
|||||||
|
|
||||||
call assert_fails('call min(1)', 'E712:')
|
call assert_fails('call min(1)', 'E712:')
|
||||||
call assert_fails('call min(v:none)', 'E712:')
|
call assert_fails('call min(v:none)', 'E712:')
|
||||||
|
|
||||||
|
" check we only get one error
|
||||||
|
call assert_fails('call min([[1], #{}])', ['E745:', 'E745:'])
|
||||||
|
call assert_fails('call min(#{a: [1], b: #{}})', ['E745:', 'E745:'])
|
||||||
endfunc
|
endfunc
|
||||||
|
|
||||||
func Test_strwidth()
|
func Test_strwidth()
|
||||||
|
@@ -750,6 +750,8 @@ static char *(features[]) =
|
|||||||
|
|
||||||
static int included_patches[] =
|
static int included_patches[] =
|
||||||
{ /* Add new patch number below this line */
|
{ /* Add new patch number below this line */
|
||||||
|
/**/
|
||||||
|
2466,
|
||||||
/**/
|
/**/
|
||||||
2465,
|
2465,
|
||||||
/**/
|
/**/
|
||||||
|
Reference in New Issue
Block a user