Mercurial > vim
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