]> granicus.if.org Git - vim/commitdiff
patch 8.2.0218: several Vim9 instructions are not tested v8.2.0218
authorBram Moolenaar <Bram@vim.org>
Wed, 5 Feb 2020 21:55:48 +0000 (22:55 +0100)
committerBram Moolenaar <Bram@vim.org>
Wed, 5 Feb 2020 21:55:48 +0000 (22:55 +0100)
Problem:    Several Vim9 instructions are not tested.
Solution:   Add more tests.

src/testdir/test_vim9_script.vim
src/version.c

index b862d0c19324191265c13e09a1619edea3eecf83..1cff3b61b202d87ff70013bc7b6eea1537c0639f 100644 (file)
@@ -474,39 +474,7 @@ def s:ScriptFuncLoad(arg: string)
   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()
+def Test_disassembleLoad()
   assert_fails('disass NoFunc', 'E1061:')
   assert_fails('disass NotCompiled', 'E1062:')
 
@@ -522,8 +490,19 @@ def Test_disassemble()
         \ .. ' 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
 
-  res = execute('disass s:ScriptFuncPush')
+def Test_disassemblePush()
+  let res = execute('disass s:ScriptFuncPush')
   assert_match('<SNR>\d*_ScriptFuncPush.*'
         \ .. 'localbool = true.*'
         \ .. ' PUSH v:true.*'
@@ -538,8 +517,23 @@ def Test_disassemble()
         \ .. ' PUSHF 1.234.*'
         \, res)
   endif
+enddef
 
-  res = execute('disass s:ScriptFuncStore')
+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,8 +552,20 @@ def Test_disassemble()
         \ .. '@z = ''rv''.*'
         \ .. ' STOREREG @z.*'
         \, res)
+enddef
+
+def s:ScriptFuncTry()
+  try
+    echo 'yes'
+  catch /fail/
+    echo 'no'
+  finally
+    echo 'end'
+  endtry
+enddef
 
-  res = execute('disass s:ScriptFuncTry')
+def Test_disassembleTry()
+  let res = execute('disass s:ScriptFuncTry')
   assert_match('<SNR>\d*_ScriptFuncTry.*'
         \ .. 'try.*'
         \ .. 'TRY catch -> \d\+, finally -> \d\+.*'
@@ -577,5 +583,86 @@ def Test_disassemble()
         \, 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
index 5a11a1f139c0785aaa1a7cf063077de4502d0557..b75f5d690117c4f7cecfe56674b950d01a1aa55d 100644 (file)
@@ -742,6 +742,8 @@ static char *(features[]) =
 
 static int included_patches[] =
 {   /* Add new patch number below this line */
+/**/
+    218,
 /**/
     217,
 /**/