0
0
mirror of https://github.com/vim/vim.git synced 2025-07-26 11:04:33 -04:00

patch 9.0.1722: wrong error messages when passing wrong types to count()

Problem: wrong error messages when passing wrong types to count()
Solution: fix it

This fixes two problems:
1. When passing wrong type to {ic} argument of count(), two error
   messages are given, the second of which is misleading.
2. When passing wrong type to {comp} argument of count(), the error
   message doesn't mention that {comp} may be a String.

closes: #12825

Signed-off-by: Christian Brabandt <cb@256bit.org>
Co-authored-by: zeertzjq <zeertzjq@outlook.com>
This commit is contained in:
zeertzjq 2023-08-17 22:10:40 +02:00 committed by Christian Brabandt
parent 4112acae08
commit 4f389e7c0f
No known key found for this signature in database
GPG Key ID: F3F92DA383FDDE09
4 changed files with 9 additions and 4 deletions

View File

@ -1802,7 +1802,8 @@ EXTERN char e_funcref_variable_name_must_start_with_capital_str[]
INIT(= N_("E704: Funcref variable name must start with a capital: %s")); INIT(= N_("E704: Funcref variable name must start with a capital: %s"));
EXTERN char e_variable_name_conflicts_with_existing_function_str[] EXTERN char e_variable_name_conflicts_with_existing_function_str[]
INIT(= N_("E705: Variable name conflicts with existing function: %s")); INIT(= N_("E705: Variable name conflicts with existing function: %s"));
// E706 unused EXTERN char e_argument_of_str_must_be_list_string_or_dictionary[]
INIT(= N_("E706: Argument of %s must be a List, String or Dictionary"));
EXTERN char e_function_name_conflicts_with_variable_str[] EXTERN char e_function_name_conflicts_with_variable_str[]
INIT(= N_("E707: Function name conflicts with variable: %s")); INIT(= N_("E707: Function name conflicts with variable: %s"));
EXTERN char e_slice_must_come_last[] EXTERN char e_slice_must_come_last[]

View File

@ -2735,8 +2735,9 @@ f_count(typval_T *argvars, typval_T *rettv)
else else
n = dict_count(argvars[0].vval.v_dict, &argvars[1], ic); n = dict_count(argvars[0].vval.v_dict, &argvars[1], ic);
} }
else else if (!error)
semsg(_(e_argument_of_str_must_be_list_or_dictionary), "count()"); semsg(_(e_argument_of_str_must_be_list_string_or_dictionary),
"count()");
rettv->vval.v_number = n; rettv->vval.v_number = n;
} }

View File

@ -1749,7 +1749,8 @@ func Test_count()
call assert_equal(2, count("fooooo", "oo")) call assert_equal(2, count("fooooo", "oo"))
call assert_equal(0, count("foo", "")) call assert_equal(0, count("foo", ""))
call assert_fails('call count(0, 0)', 'E712:') call assert_fails('call count(0, 0)', 'E706:')
call assert_fails('call count("", "", {})', ['E728:', 'E728:'])
endfunc endfunc
func Test_changenr() func Test_changenr()

View File

@ -695,6 +695,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 */
/**/
1722,
/**/ /**/
1721, 1721,
/**/ /**/