To: vim_dev@googlegroups.com Subject: Patch 8.2.0218 Fcc: outbox From: Bram Moolenaar Mime-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ------------ Patch 8.2.0218 Problem: Several Vim9 instructions are not tested. Solution: Add more tests. Files: src/testdir/test_vim9_script.vim *** ../vim-8.2.0217/src/testdir/test_vim9_script.vim 2020-02-05 22:10:01.640130754 +0100 --- src/testdir/test_vim9_script.vim 2020-02-05 22:54:14.896603851 +0100 *************** *** 474,512 **** echo @z enddef ! def s:ScriptFuncPush() ! let localbool = true ! let localspec = v:none ! let localblob = 0z1234 ! if has('float') ! let localfloat = 1.234 ! endif ! enddef ! ! def s:ScriptFuncStore() ! let localnr = 1 ! localnr = 2 ! let localstr = 'abc' ! localstr = 'xyz' ! v:char = 'abc' ! s:scriptvar = 'sv' ! g:globalvar = 'gv' ! &tabstop = 8 ! $ENVVAR = 'ev' ! @z = 'rv' ! enddef ! ! def s:ScriptFuncTry() ! try ! echo 'yes' ! catch /fail/ ! echo 'no' ! finally ! echo 'end' ! endtry ! enddef ! ! def Test_disassemble() assert_fails('disass NoFunc', 'E1061:') assert_fails('disass NotCompiled', 'E1062:') --- 474,480 ---- echo @z enddef ! def Test_disassembleLoad() assert_fails('disass NoFunc', 'E1061:') assert_fails('disass NotCompiled', 'E1062:') *************** *** 522,529 **** \ .. ' LOADENV $ENVVAR.*' \ .. ' LOADREG @z.*' \, res) ! res = execute('disass s:ScriptFuncPush') assert_match('\d*_ScriptFuncPush.*' \ .. 'localbool = true.*' \ .. ' PUSH v:true.*' --- 490,508 ---- \ .. ' LOADENV $ENVVAR.*' \ .. ' LOADREG @z.*' \, res) + enddef ! def s:ScriptFuncPush() ! let localbool = true ! let localspec = v:none ! let localblob = 0z1234 ! if has('float') ! let localfloat = 1.234 ! endif ! enddef ! ! def Test_disassemblePush() ! let res = execute('disass s:ScriptFuncPush') assert_match('\d*_ScriptFuncPush.*' \ .. 'localbool = true.*' \ .. ' PUSH v:true.*' *************** *** 538,545 **** \ .. ' PUSHF 1.234.*' \, res) endif ! res = execute('disass s:ScriptFuncStore') assert_match('\d*_ScriptFuncStore.*' \ .. 'localnr = 2.*' \ .. ' STORE 2 in $0.*' --- 517,539 ---- \ .. ' PUSHF 1.234.*' \, res) endif + enddef + + def s:ScriptFuncStore() + let localnr = 1 + localnr = 2 + let localstr = 'abc' + localstr = 'xyz' + v:char = 'abc' + s:scriptvar = 'sv' + g:globalvar = 'gv' + &tabstop = 8 + $ENVVAR = 'ev' + @z = 'rv' + enddef ! def Test_disassembleStore() ! let res = execute('disass s:ScriptFuncStore') assert_match('\d*_ScriptFuncStore.*' \ .. 'localnr = 2.*' \ .. ' STORE 2 in $0.*' *************** *** 558,565 **** \ .. '@z = ''rv''.*' \ .. ' STOREREG @z.*' \, res) ! res = execute('disass s:ScriptFuncTry') assert_match('\d*_ScriptFuncTry.*' \ .. 'try.*' \ .. 'TRY catch -> \d\+, finally -> \d\+.*' --- 552,571 ---- \ .. '@z = ''rv''.*' \ .. ' STOREREG @z.*' \, res) + enddef ! def s:ScriptFuncTry() ! try ! echo 'yes' ! catch /fail/ ! echo 'no' ! finally ! echo 'end' ! endtry ! enddef ! ! def Test_disassembleTry() ! let res = execute('disass s:ScriptFuncTry') assert_match('\d*_ScriptFuncTry.*' \ .. 'try.*' \ .. 'TRY catch -> \d\+, finally -> \d\+.*' *************** *** 577,581 **** --- 583,668 ---- \, res) enddef + def s:ScriptFuncNew() + let ll = [1, "two", 333] + let dd = #{one: 1, two: "val"} + enddef + + def Test_disassembleNew() + let res = execute('disass s:ScriptFuncNew') + assert_match('\d*_ScriptFuncNew.*' + \ .. 'let ll = \[1, "two", 333].*' + \ .. 'PUSHNR 1.*' + \ .. 'PUSHS "two".*' + \ .. 'PUSHNR 333.*' + \ .. 'NEWLIST size 3.*' + \ .. 'let dd = #{one: 1, two: "val"}.*' + \ .. 'PUSHS "one".*' + \ .. 'PUSHNR 1.*' + \ .. 'PUSHS "two".*' + \ .. 'PUSHS "val".*' + \ .. 'NEWDICT size 2.*' + \, res) + enddef + + def FuncWithArg(arg) + echo arg + enddef + + func UserFunc() + echo 'nothing' + endfunc + + func UserFuncWithArg(arg) + echo a:arg + endfunc + + def s:ScriptFuncCall(): string + changenr() + char2nr("abc") + Test_disassembleNew() + FuncWithArg(343) + UserFunc() + UserFuncWithArg("foo") + let FuncRef = function("UserFunc") + FuncRef() + let FuncRefWithArg = function("UserFuncWithArg") + FuncRefWithArg("bar") + return "yes" + enddef + + def Test_disassembleCall() + let res = execute('disass s:ScriptFuncCall') + assert_match('\d*_ScriptFuncCall.*' + \ .. 'changenr().*' + \ .. ' BCALL changenr(argc 0).*' + \ .. 'char2nr("abc").*' + \ .. ' PUSHS "abc".*' + \ .. ' BCALL char2nr(argc 1).*' + \ .. 'Test_disassembleNew().*' + \ .. ' DCALL Test_disassembleNew(argc 0).*' + \ .. 'FuncWithArg(343).*' + \ .. ' PUSHNR 343.*' + \ .. ' DCALL FuncWithArg(argc 1).*' + \ .. 'UserFunc().*' + \ .. ' UCALL UserFunc(argc 0).*' + \ .. 'UserFuncWithArg("foo").*' + \ .. ' PUSHS "foo".*' + \ .. ' UCALL UserFuncWithArg(argc 1).*' + \ .. 'let FuncRef = function("UserFunc").*' + \ .. 'FuncRef().*' + \ .. ' LOAD $\d.*' + \ .. ' PCALL (argc 0).*' + \ .. 'let FuncRefWithArg = function("UserFuncWithArg").*' + \ .. 'FuncRefWithArg("bar").*' + \ .. ' PUSHS "bar".*' + \ .. ' LOAD $\d.*' + \ .. ' PCALL (argc 1).*' + \ .. 'return "yes".*' + \ .. ' PUSHS "yes".*' + \ .. ' RETURN.*' + \, res) + enddef + " vim: ts=8 sw=2 sts=2 expandtab tw=80 fdm=marker *** ../vim-8.2.0217/src/version.c 2020-02-05 22:21:04.287030845 +0100 --- src/version.c 2020-02-05 22:55:15.540395661 +0100 *************** *** 744,745 **** --- 744,747 ---- { /* Add new patch number below this line */ + /**/ + 218, /**/ -- To define recursion, we must first define recursion. /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ /// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ \\\ an exciting new programming language -- http://www.Zimbu.org /// \\\ help me help AIDS victims -- http://ICCF-Holland.org ///