Mercurial > vim
diff src/testdir/test_vim9_disassemble.vim @ 23458:d2b1269c2c68 v8.2.2272
patch 8.2.2272: Vim9: extend() can violate the type of a variable
Commit: https://github.com/vim/vim/commit/aa210a3aeccc33c6051978017959126b037f94af
Author: Bram Moolenaar <Bram@vim.org>
Date: Sat Jan 2 15:41:03 2021 +0100
patch 8.2.2272: Vim9: extend() can violate the type of a variable
Problem: Vim9: extend() can violate the type of a variable.
Solution: Add the type to the dictionary or list and check items against it.
(closes #7593)
author | Bram Moolenaar <Bram@vim.org> |
---|---|
date | Sat, 02 Jan 2021 15:45:04 +0100 |
parents | 4c6ebf531284 |
children | f90e429453fd |
line wrap: on
line diff
--- a/src/testdir/test_vim9_disassemble.vim +++ b/src/testdir/test_vim9_disassemble.vim @@ -257,6 +257,7 @@ def Test_disassemble_store_member() assert_match('<SNR>\d*_ScriptFuncStoreMember\_s*' .. 'var locallist: list<number> = []\_s*' .. '\d NEWLIST size 0\_s*' .. + '\d SETTYPE list<number>\_s*' .. '\d STORE $0\_s*' .. 'locallist\[0\] = 123\_s*' .. '\d PUSHNR 123\_s*' .. @@ -265,6 +266,7 @@ def Test_disassemble_store_member() '\d STORELIST\_s*' .. 'var localdict: dict<number> = {}\_s*' .. '\d NEWDICT size 0\_s*' .. + '\d SETTYPE dict<number>\_s*' .. '\d STORE $1\_s*' .. 'localdict\["a"\] = 456\_s*' .. '\d\+ PUSHNR 456\_s*' .. @@ -347,6 +349,7 @@ def Test_disassemble_list_add() assert_match('<SNR>\d*_ListAdd\_s*' .. 'var l: list<number> = []\_s*' .. '\d NEWLIST size 0\_s*' .. + '\d SETTYPE list<number>\_s*' .. '\d STORE $0\_s*' .. 'add(l, 123)\_s*' .. '\d LOAD $0\_s*' .. @@ -1034,6 +1037,7 @@ def Test_disassemble_for_loop() assert_match('ForLoop\_s*' .. 'var res: list<number>\_s*' .. '\d NEWLIST size 0\_s*' .. + '\d SETTYPE list<number>\_s*' .. '\d STORE $0\_s*' .. 'for i in range(3)\_s*' .. '\d STORE -1 in $1\_s*' .. @@ -1137,6 +1141,7 @@ def Test_disassemble_typecast() '\d LOADG g:number\_s*' .. '\d CHECKTYPE number stack\[-1\]\_s*' .. '\d NEWLIST size 2\_s*' .. + '\d SETTYPE list<number>\_s*' .. '\d STORE $0\_s*' .. '\d PUSHNR 0\_s*' .. '\d RETURN\_s*',