forked from aniani/vim
patch 8.2.3249: Vim9: error for re-imported function with default argument
Problem: Vim9: error for re-imported function with default argument. Solution: Do not check argument type if it is still unknown. (closes #8653)
This commit is contained in:
@@ -954,9 +954,11 @@ parse_type(char_u **arg, garray_T *type_gap, int give_error)
|
||||
|
||||
/*
|
||||
* Check if "type1" and "type2" are exactly the same.
|
||||
* "flags" can have ETYPE_ARG_UNKNOWN, which means that an unknown argument
|
||||
* type in "type1" is accepted.
|
||||
*/
|
||||
int
|
||||
equal_type(type_T *type1, type_T *type2)
|
||||
equal_type(type_T *type1, type_T *type2, int flags)
|
||||
{
|
||||
int i;
|
||||
|
||||
@@ -981,17 +983,19 @@ equal_type(type_T *type1, type_T *type2)
|
||||
break; // not composite is always OK
|
||||
case VAR_LIST:
|
||||
case VAR_DICT:
|
||||
return equal_type(type1->tt_member, type2->tt_member);
|
||||
return equal_type(type1->tt_member, type2->tt_member, flags);
|
||||
case VAR_FUNC:
|
||||
case VAR_PARTIAL:
|
||||
if (!equal_type(type1->tt_member, type2->tt_member)
|
||||
if (!equal_type(type1->tt_member, type2->tt_member, flags)
|
||||
|| type1->tt_argcount != type2->tt_argcount)
|
||||
return FALSE;
|
||||
if (type1->tt_argcount < 0
|
||||
|| type1->tt_args == NULL || type2->tt_args == NULL)
|
||||
return TRUE;
|
||||
for (i = 0; i < type1->tt_argcount; ++i)
|
||||
if (!equal_type(type1->tt_args[i], type2->tt_args[i]))
|
||||
if ((flags & ETYPE_ARG_UNKNOWN) == 0
|
||||
&& !equal_type(type1->tt_args[i], type2->tt_args[i],
|
||||
flags))
|
||||
return FALSE;
|
||||
return TRUE;
|
||||
}
|
||||
@@ -1005,7 +1009,7 @@ equal_type(type_T *type1, type_T *type2)
|
||||
void
|
||||
common_type(type_T *type1, type_T *type2, type_T **dest, garray_T *type_gap)
|
||||
{
|
||||
if (equal_type(type1, type2))
|
||||
if (equal_type(type1, type2, 0))
|
||||
{
|
||||
*dest = type1;
|
||||
return;
|
||||
|
Reference in New Issue
Block a user