1
0
forked from aniani/vim

patch 8.2.2745: Vim9: missing part of the argument change

Problem:    Vim9: missing part of the argument change.
Solution:   Add missing changes.
This commit is contained in:
Bram Moolenaar 2021-04-10 17:46:52 +02:00
parent 962c43bf0d
commit 51e7e78de7
2 changed files with 15 additions and 11 deletions

View File

@ -55,7 +55,7 @@ func_tbl_get(void)
/*
* Get one function argument.
* If "argtypes" is not NULL also get the type: "arg: type".
* If "argtypes" is not NULL also get the type: "arg: type" (:def function).
* If "types_optional" is TRUE a missing type is OK, use "any".
* If "evalarg" is not NULL use it to check for an already declared name.
* Return a pointer to after the type.
@ -73,6 +73,7 @@ one_function_arg(
{
char_u *p = arg;
char_u *arg_copy = NULL;
int is_underscore = FALSE;
while (ASCII_ISALNUM(*p) || *p == '_')
++p;
@ -107,15 +108,16 @@ one_function_arg(
*p = c;
return arg;
}
// Check for duplicate argument name.
for (i = 0; i < newargs->ga_len; ++i)
if (STRCMP(((char_u **)(newargs->ga_data))[i], arg_copy) == 0)
{
semsg(_("E853: Duplicate argument name: %s"), arg_copy);
vim_free(arg_copy);
return arg;
}
is_underscore = arg_copy[0] == '_' && arg_copy[1] == NUL;
if (argtypes != NULL && !is_underscore)
// Check for duplicate argument name.
for (i = 0; i < newargs->ga_len; ++i)
if (STRCMP(((char_u **)(newargs->ga_data))[i], arg_copy) == 0)
{
semsg(_("E853: Duplicate argument name: %s"), arg_copy);
vim_free(arg_copy);
return arg;
}
((char_u **)(newargs->ga_data))[newargs->ga_len] = arg_copy;
newargs->ga_len++;
@ -146,7 +148,7 @@ one_function_arg(
if (!skip)
type = vim_strnsave(type, p - type);
}
else if (*skipwhite(p) != '=' && !types_optional)
else if (*skipwhite(p) != '=' && !types_optional && !is_underscore)
{
semsg(_(e_missing_argument_type_for_str),
arg_copy == NULL ? arg : arg_copy);

View File

@ -750,6 +750,8 @@ static char *(features[]) =
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
2745,
/**/
2744,
/**/