Patch 8.2.0218

8 views
Skip to first unread message

Bram Moolenaar

unread,
Feb 5, 2020, 4:56:25 PM2/5/20
to vim...@googlegroups.com

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('<SNR>\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('<SNR>\d*_ScriptFuncPush.*'
\ .. 'localbool = true.*'
\ .. ' PUSH v:true.*'
***************
*** 538,545 ****
\ .. ' PUSHF 1.234.*'
\, res)
endif

! res = execute('disass s:ScriptFuncStore')
assert_match('<SNR>\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('<SNR>\d*_ScriptFuncStore.*'
\ .. 'localnr = 2.*'
\ .. ' STORE 2 in $0.*'
***************
*** 558,565 ****
\ .. '@z = ''rv''.*'
\ .. ' STOREREG @z.*'
\, res)

! res = execute('disass s:ScriptFuncTry')
assert_match('<SNR>\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('<SNR>\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('<SNR>\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('<SNR>\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 -- Br...@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 ///
Reply all
Reply to author
Forward
0 new messages