forked from aniani/vim
patch 8.2.3991: Vim9: error when extending dict<any>
Problem: Vim9: error when extending dict<any> with another type that it was
initialized with.
Solution: Also set the type for dict<any> if the initializer has a more
specific type. (closes #9461)
This commit is contained in:
@@ -2478,7 +2478,7 @@ filter_map(typval_T *argvars, typval_T *rettv, filtermap_T filtermap)
|
||||
{
|
||||
// Check that map() does not change the type of the dict.
|
||||
ga_init2(&type_list, sizeof(type_T *), 10);
|
||||
type = typval2type(argvars, get_copyID(), &type_list, TRUE);
|
||||
type = typval2type(argvars, get_copyID(), &type_list, TVTT_DO_MEMBER);
|
||||
}
|
||||
|
||||
if (argvars[0].v_type != VAR_BLOB
|
||||
@@ -2763,9 +2763,9 @@ extend(typval_T *argvars, typval_T *rettv, char_u *arg_errmsg, int is_new)
|
||||
|
||||
if (!is_new && in_vim9script())
|
||||
{
|
||||
// Check that map() does not change the type of the dict.
|
||||
// Check that extend() does not change the type of the dict.
|
||||
ga_init2(&type_list, sizeof(type_T *), 10);
|
||||
type = typval2type(argvars, get_copyID(), &type_list, TRUE);
|
||||
type = typval2type(argvars, get_copyID(), &type_list, TVTT_DO_MEMBER);
|
||||
}
|
||||
|
||||
if (argvars[0].v_type == VAR_LIST && argvars[1].v_type == VAR_LIST)
|
||||
|
||||
Reference in New Issue
Block a user