patch 8.2.0199: Vim9 script commands not sufficiently tested
Problem: Vim9 script commands not sufficiently tested.
Solution: Add more tests. Fix script-local function use.
diff --git a/src/testdir/test_vim9_script.vim b/src/testdir/test_vim9_script.vim
index 749c264..ffeec5d 100644
--- a/src/testdir/test_vim9_script.vim
+++ b/src/testdir/test_vim9_script.vim
@@ -106,7 +106,7 @@
Increment()
" works with and without :call
assert_equal(4, g:counter)
- call assert_equal(4, g:counter)
+ assert_equal(4, g:counter)
unlet g:counter
enddef
@@ -354,7 +354,7 @@
l->remove(0)
l->add(5)
l->insert(99, 1)
- call assert_equal([2, 99, 3, 4, 5], l)
+ assert_equal([2, 99, 3, 4, 5], l)
enddef
" Test that inside :function a Python function can be defined, :def is not
@@ -387,15 +387,52 @@
def Test_compile_const_expr()
assert_equal("\nyes", execute('call HasEval()'))
let instr = execute('disassemble HasEval')
- call assert_match('PUSHS "yes"', instr)
- call assert_notmatch('PUSHS "no"', instr)
- call assert_notmatch('JUMP', instr)
+ assert_match('PUSHS "yes"', instr)
+ assert_notmatch('PUSHS "no"', instr)
+ assert_notmatch('JUMP', instr)
assert_equal("\nno", execute('call HasNothing()'))
instr = execute('disassemble HasNothing')
- call assert_notmatch('PUSHS "yes"', instr)
- call assert_match('PUSHS "no"', instr)
- call assert_notmatch('JUMP', instr)
+ assert_notmatch('PUSHS "yes"', instr)
+ assert_match('PUSHS "no"', instr)
+ assert_notmatch('JUMP', instr)
+enddef
+
+func NotCompiled()
+ echo "not"
+endfunc
+
+let s:scriptvar = 4
+let g:globalvar = 'g'
+
+def s:ScriptFunc(arg: string)
+ let local = 1
+ buffers
+ echo arg
+ echo local
+ echo v:version
+ echo s:scriptvar
+ echo g:globalvar
+ echo &tabstop
+ echo $ENVVAR
+ echo @z
+enddef
+
+def Test_disassemble()
+ assert_fails('disass NoFunc', 'E1061:')
+ assert_fails('disass NotCompiled', 'E1062:')
+
+ let res = execute('disass s:ScriptFunc')
+ assert_match('<SNR>\d*_ScriptFunc.*'
+ \ .. 'buffers.*'
+ \ .. ' EXEC \+buffers.*'
+ \ .. ' LOAD arg\[-1\].*'
+ \ .. ' LOAD $0.*'
+ \ .. ' LOADV v:version.*'
+ \ .. ' LOADS s:scriptvar from .*test_vim9_script.vim.*'
+ \ .. ' LOADG g:globalvar.*'
+ \ .. ' LOADENV $ENVVAR.*'
+ \ .. ' LOADREG @z.*', res)
enddef