diff src/testdir/test_vim9_script.vim @ 19316:17dc6282f370 v8.2.0216

patch 8.2.0216: several Vim9 instructions are not tested Commit: https://github.com/vim/vim/commit/ff80cb6807d99db35cc928f151b87503b2928e19 Author: Bram Moolenaar <Bram@vim.org> Date: Wed Feb 5 22:10:05 2020 +0100 patch 8.2.0216: several Vim9 instructions are not tested Problem: Several Vim9 instructions are not tested. Solution: Add more tests. Fix :disassamble output. Make catch with pattern work.
author Bram Moolenaar <Bram@vim.org>
date Wed, 05 Feb 2020 22:15:03 +0100
parents 84703c85a583
children 6e199d1d11d0
line wrap: on
line diff
--- a/src/testdir/test_vim9_script.vim
+++ b/src/testdir/test_vim9_script.vim
@@ -474,6 +474,15 @@ 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
@@ -487,6 +496,16 @@ def s:ScriptFuncStore()
   @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:')
@@ -504,9 +523,22 @@ def Test_disassemble()
         \ .. ' LOADREG @z.*'
         \, res)
 
-  " TODO:
-  " v:char =
-  " s:scriptvar =
+  res = execute('disass s:ScriptFuncPush')
+  assert_match('<SNR>\d*_ScriptFuncPush.*'
+        \ .. 'localbool = true.*'
+        \ .. ' PUSH v:true.*'
+        \ .. 'localspec = v:none.*'
+        \ .. ' PUSH v:none.*'
+        \ .. 'localblob = 0z1234.*'
+        \ .. ' PUSHBLOB 0z1234.*'
+        \, res)
+  if has('float')
+  assert_match('<SNR>\d*_ScriptFuncPush.*'
+        \ .. 'localfloat = 1.234.*'
+        \ .. ' PUSHF 1.234.*'
+        \, res)
+  endif
+
   res = execute('disass s:ScriptFuncStore')
   assert_match('<SNR>\d*_ScriptFuncStore.*'
         \ .. 'localnr = 2.*'
@@ -526,6 +558,23 @@ def Test_disassemble()
         \ .. '@z = ''rv''.*'
         \ .. ' STOREREG @z.*'
         \, res)
+
+  res = execute('disass s:ScriptFuncTry')
+  assert_match('<SNR>\d*_ScriptFuncTry.*'
+        \ .. 'try.*'
+        \ .. 'TRY catch -> \d\+, finally -> \d\+.*'
+        \ .. 'catch /fail/.*'
+        \ .. ' JUMP -> \d\+.*'
+        \ .. ' PUSH v:exception.*'
+        \ .. ' PUSHS "fail".*'
+        \ .. ' COMPARESTRING =\~.*'
+        \ .. ' JUMP_IF_FALSE -> \d\+.*'
+        \ .. ' CATCH.*'
+        \ .. 'finally.*'
+        \ .. ' PUSHS "end".*'
+        \ .. 'endtry.*'
+        \ .. ' ENDTRY.*'
+        \, res)
 enddef