patch 8.2.4295: Vim9: concatenating two lists may result in wrong type
Problem: Vim9: concatenating two lists may result in wrong type.
Solution: Remove the type instead of using list<any>. (closes #9692)
diff --git a/src/list.c b/src/list.c
index 3a6ea97..578d6f1 100644
--- a/src/list.c
+++ b/src/list.c
@@ -1216,11 +1216,10 @@
copy = list_alloc();
if (copy != NULL)
{
- if (orig->lv_type == NULL)
+ if (orig->lv_type == NULL || top || deep)
copy->lv_type = NULL;
else
- copy->lv_type = alloc_type(top || deep
- ? &t_list_any: orig->lv_type);
+ copy->lv_type = alloc_type(orig->lv_type);
if (copyID != 0)
{
// Do this before adding the items, because one of the items may
diff --git a/src/testdir/test_vim9_expr.vim b/src/testdir/test_vim9_expr.vim
index a4e3e9e..cf4347c 100644
--- a/src/testdir/test_vim9_expr.vim
+++ b/src/testdir/test_vim9_expr.vim
@@ -1500,6 +1500,12 @@
assert_equal([[1, 2]], lln)
END
v9.CheckDefAndScriptSuccess(lines)
+
+ lines =<< trim END
+ var ln: list<number> = [0]
+ var lln: list<list<number>> = [ln + []]
+ END
+ v9.CheckDefAndScriptSuccess(lines)
enddef
" test multiply, divide, modulo
diff --git a/src/version.c b/src/version.c
index 70d76d5..f11705d 100644
--- a/src/version.c
+++ b/src/version.c
@@ -747,6 +747,8 @@
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
+ 4295,
+/**/
4294,
/**/
4293,