comparison 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
comparison
equal deleted inserted replaced
23457:86b9697a8c63 23458:d2b1269c2c68
255 def Test_disassemble_store_member() 255 def Test_disassemble_store_member()
256 var res = execute('disass s:ScriptFuncStoreMember') 256 var res = execute('disass s:ScriptFuncStoreMember')
257 assert_match('<SNR>\d*_ScriptFuncStoreMember\_s*' .. 257 assert_match('<SNR>\d*_ScriptFuncStoreMember\_s*' ..
258 'var locallist: list<number> = []\_s*' .. 258 'var locallist: list<number> = []\_s*' ..
259 '\d NEWLIST size 0\_s*' .. 259 '\d NEWLIST size 0\_s*' ..
260 '\d SETTYPE list<number>\_s*' ..
260 '\d STORE $0\_s*' .. 261 '\d STORE $0\_s*' ..
261 'locallist\[0\] = 123\_s*' .. 262 'locallist\[0\] = 123\_s*' ..
262 '\d PUSHNR 123\_s*' .. 263 '\d PUSHNR 123\_s*' ..
263 '\d PUSHNR 0\_s*' .. 264 '\d PUSHNR 0\_s*' ..
264 '\d LOAD $0\_s*' .. 265 '\d LOAD $0\_s*' ..
265 '\d STORELIST\_s*' .. 266 '\d STORELIST\_s*' ..
266 'var localdict: dict<number> = {}\_s*' .. 267 'var localdict: dict<number> = {}\_s*' ..
267 '\d NEWDICT size 0\_s*' .. 268 '\d NEWDICT size 0\_s*' ..
269 '\d SETTYPE dict<number>\_s*' ..
268 '\d STORE $1\_s*' .. 270 '\d STORE $1\_s*' ..
269 'localdict\["a"\] = 456\_s*' .. 271 'localdict\["a"\] = 456\_s*' ..
270 '\d\+ PUSHNR 456\_s*' .. 272 '\d\+ PUSHNR 456\_s*' ..
271 '\d\+ PUSHS "a"\_s*' .. 273 '\d\+ PUSHS "a"\_s*' ..
272 '\d\+ LOAD $1\_s*' .. 274 '\d\+ LOAD $1\_s*' ..
345 def Test_disassemble_list_add() 347 def Test_disassemble_list_add()
346 var res = execute('disass s:ListAdd') 348 var res = execute('disass s:ListAdd')
347 assert_match('<SNR>\d*_ListAdd\_s*' .. 349 assert_match('<SNR>\d*_ListAdd\_s*' ..
348 'var l: list<number> = []\_s*' .. 350 'var l: list<number> = []\_s*' ..
349 '\d NEWLIST size 0\_s*' .. 351 '\d NEWLIST size 0\_s*' ..
352 '\d SETTYPE list<number>\_s*' ..
350 '\d STORE $0\_s*' .. 353 '\d STORE $0\_s*' ..
351 'add(l, 123)\_s*' .. 354 'add(l, 123)\_s*' ..
352 '\d LOAD $0\_s*' .. 355 '\d LOAD $0\_s*' ..
353 '\d PUSHNR 123\_s*' .. 356 '\d PUSHNR 123\_s*' ..
354 '\d LISTAPPEND\_s*' .. 357 '\d LISTAPPEND\_s*' ..
1032 assert_equal([0, 1, 2], ForLoop()) 1035 assert_equal([0, 1, 2], ForLoop())
1033 var instr = execute('disassemble ForLoop') 1036 var instr = execute('disassemble ForLoop')
1034 assert_match('ForLoop\_s*' .. 1037 assert_match('ForLoop\_s*' ..
1035 'var res: list<number>\_s*' .. 1038 'var res: list<number>\_s*' ..
1036 '\d NEWLIST size 0\_s*' .. 1039 '\d NEWLIST size 0\_s*' ..
1040 '\d SETTYPE list<number>\_s*' ..
1037 '\d STORE $0\_s*' .. 1041 '\d STORE $0\_s*' ..
1038 'for i in range(3)\_s*' .. 1042 'for i in range(3)\_s*' ..
1039 '\d STORE -1 in $1\_s*' .. 1043 '\d STORE -1 in $1\_s*' ..
1040 '\d PUSHNR 3\_s*' .. 1044 '\d PUSHNR 3\_s*' ..
1041 '\d BCALL range(argc 1)\_s*' .. 1045 '\d BCALL range(argc 1)\_s*' ..
1135 'var l: list<number> = \[23, <number>g:number\].*' .. 1139 'var l: list<number> = \[23, <number>g:number\].*' ..
1136 '\d PUSHNR 23\_s*' .. 1140 '\d PUSHNR 23\_s*' ..
1137 '\d LOADG g:number\_s*' .. 1141 '\d LOADG g:number\_s*' ..
1138 '\d CHECKTYPE number stack\[-1\]\_s*' .. 1142 '\d CHECKTYPE number stack\[-1\]\_s*' ..
1139 '\d NEWLIST size 2\_s*' .. 1143 '\d NEWLIST size 2\_s*' ..
1144 '\d SETTYPE list<number>\_s*' ..
1140 '\d STORE $0\_s*' .. 1145 '\d STORE $0\_s*' ..
1141 '\d PUSHNR 0\_s*' .. 1146 '\d PUSHNR 0\_s*' ..
1142 '\d RETURN\_s*', 1147 '\d RETURN\_s*',
1143 instr) 1148 instr)
1144 enddef 1149 enddef