patch 8.2.3127: Vim9: no error when adding number to list of string

Problem:    Vim9: no error when adding number to list of string.
Solution:   Check the value type. (closes #8529)
This commit is contained in:
Bram Moolenaar
2021-07-08 20:53:40 +02:00
parent d4ab807d62
commit f32f099761
3 changed files with 13 additions and 1 deletions

View File

@ -597,13 +597,16 @@ list_append(list_T *l, listitem_T *item)
/*
* Append typval_T "tv" to the end of list "l". "tv" is copied.
* Return FAIL when out of memory.
* Return FAIL when out of memory or the type is wrong.
*/
int
list_append_tv(list_T *l, typval_T *tv)
{
listitem_T *li = listitem_alloc();
if (l->lv_type != NULL && l->lv_type->tt_member != NULL
&& check_typval_arg_type(l->lv_type->tt_member, tv, 0) == FAIL)
return FAIL;
if (li == NULL)
return FAIL;
copy_tv(tv, &li->li_tv);

View File

@ -104,6 +104,13 @@ def Test_add_list()
add(l, 123)
END
CheckScriptSuccess(lines)
lines =<< trim END
vim9script
var l: list<string> = ['a']
l->add(123)
END
CheckScriptFailure(lines, 'E1012: Type mismatch; expected string but got number', 3)
enddef
def Test_add_blob()

View File

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