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 -- [email protected] -- 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    ///

-- 
-- 
You received this message from the "vim_dev" maillist.
Do not top-post! Type your reply below the text you are replying to.
For more information, visit http://www.vim.org/maillist.php

--- 
You received this message because you are subscribed to the Google Groups 
"vim_dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/vim_dev/202002052156.015LuHDO026501%40masaka.moolenaar.net.

Raspunde prin e-mail lui