To: vim_dev@googlegroups.com Subject: Patch 8.2.3338 Fcc: outbox From: Bram Moolenaar Mime-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ------------ Patch 8.2.3338 Problem: Vim9: no type check when assigning a list range. (Naohiro Ono) Solution: Check the member type. (closes #8750) Files: src/list.c, src/testdir/test_listdict.vim *** ../vim-8.2.3337/src/list.c 2021-08-12 21:12:52.899143984 +0200 --- src/list.c 2021-08-13 18:14:06.055272805 +0200 *************** *** 852,857 **** --- 852,858 ---- long idx1 = idx1_arg; listitem_T *first_li = list_find_index(dest, &idx1); long idx; + type_T *member_type = NULL; /* * Check whether any of the list items is locked before making any changes. *************** *** 869,874 **** --- 870,879 ---- ++idx; } + if (in_vim9script() && dest->lv_type != NULL + && dest->lv_type->tt_member != NULL) + member_type = dest->lv_type->tt_member; + /* * Assign the List values to the list items. */ *************** *** 880,885 **** --- 885,894 ---- tv_op(&dest_li->li_tv, &src_li->li_tv, op); else { + if (member_type != NULL + && check_typval_arg_type(member_type, &src_li->li_tv, + NULL, 0) == FAIL) + return FAIL; clear_tv(&dest_li->li_tv); copy_tv(&src_li->li_tv, &dest_li->li_tv); } *** ../vim-8.2.3337/src/testdir/test_listdict.vim 2021-08-12 21:12:52.899143984 +0200 --- src/testdir/test_listdict.vim 2021-08-13 18:16:15.546966073 +0200 *************** *** 189,194 **** --- 189,200 ---- call assert_equal([5, 6], l) END call CheckLegacyAndVim9Success(lines) + + let lines =<< trim END + var l = [7] + l[:] = ['text'] + END + call CheckDefAndScriptFailure(lines, 'E1012:', 2) endfunc " Test removing items in list *** ../vim-8.2.3337/src/version.c 2021-08-13 17:48:19.182894928 +0200 --- src/version.c 2021-08-13 18:13:37.227341344 +0200 *************** *** 757,758 **** --- 757,760 ---- { /* Add new patch number below this line */ + /**/ + 3338, /**/ -- TIM: To the north there lies a cave, the cave of Caerbannog, wherein, carved in mystic runes, upon the very living rock, the last words of Olfin Bedwere of Rheged make plain the last resting place of the most Holy Grail. "Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ /// \\\ \\\ sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ /// \\\ help me help AIDS victims -- http://ICCF-Holland.org ///