# HG changeset patch # User Bram Moolenaar # Date 1631220305 -7200 # Node ID 9edad9a8cca6c6d077d4aab99982c5d4c8c4f440 # Parent 11b656e7444457ba390f8b357e87b4a79f841086 patch 8.2.3422: Vim9: no failure if return type differs from returned var Commit: https://github.com/vim/vim/commit/efc084e3353d6854b6dac8b240f70cb0abb838ad Author: Bram Moolenaar Date: Thu Sep 9 22:30:52 2021 +0200 patch 8.2.3422: Vim9: no failure if return type differs from returned var Problem: Vim9: no failure if return type differs from returned variable. Solution: Copy type when copying a list. (closes https://github.com/vim/vim/issues/8847) diff --git a/src/list.c b/src/list.c --- a/src/list.c +++ b/src/list.c @@ -1217,6 +1217,7 @@ list_copy(list_T *orig, int deep, int co copy = list_alloc(); if (copy != NULL) { + copy->lv_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_func.vim b/src/testdir/test_vim9_func.vim --- a/src/testdir/test_vim9_func.vim +++ b/src/testdir/test_vim9_func.vim @@ -438,6 +438,29 @@ def Test_return_invalid() CheckScriptFailure(lines, 'E1010:') enddef +def Test_return_list_any() + var lines =<< trim END + vim9script + def Func(): list + var l: list + l->add('string') + return l + enddef + echo Func() + END + CheckScriptFailure(lines, 'E1012:') + lines =<< trim END + vim9script + def Func(): list + var l: list + l += ['string'] + return l + enddef + echo Func() + END + CheckScriptFailure(lines, 'E1012:') +enddef + func Increment() let g:counter += 1 endfunc diff --git a/src/version.c b/src/version.c --- a/src/version.c +++ b/src/version.c @@ -756,6 +756,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ /**/ + 3422, +/**/ 3421, /**/ 3420,