diff options
author | Bram Moolenaar <Bram@vim.org> | 2020-03-31 23:13:10 +0200 |
---|---|---|
committer | Bram Moolenaar <Bram@vim.org> | 2020-03-31 23:13:10 +0200 |
commit | bd5da371aafe5a2207065643502f4d1ff6b286c7 (patch) | |
tree | a76f8259b8caaf9d223063d307da28a5ea049c15 /src/testdir | |
parent | 9be61bbb170ed3df0e408c8ac12516e772dc0b75 (diff) | |
download | vim-git-bd5da371aafe5a2207065643502f4d1ff6b286c7.tar.gz |
patch 8.2.0487: Vim9: compiling not sufficiently testedv8.2.0487
Problem: Vim9: compiling not sufficiently tested.
Solution: Add more tests. Fix bug with PCALL.
Diffstat (limited to 'src/testdir')
-rw-r--r-- | src/testdir/test_vim9_disassemble.vim | 25 | ||||
-rw-r--r-- | src/testdir/test_vim9_script.vim | 11 |
2 files changed, 35 insertions, 1 deletions
diff --git a/src/testdir/test_vim9_disassemble.vim b/src/testdir/test_vim9_disassemble.vim index 99bec4337..62602956b 100644 --- a/src/testdir/test_vim9_disassemble.vim +++ b/src/testdir/test_vim9_disassemble.vim @@ -224,6 +224,31 @@ def Test_disassemble_call() enddef +def EchoArg(arg: string): string + return arg +enddef +def RefThis(): func + return function('EchoArg') +enddef +def s:ScriptPCall() + RefThis()("text") +enddef + +def Test_disassemble_pcall() + let res = execute('disass s:ScriptPCall') + assert_match('<SNR>\d\+_ScriptPCall.*' + \ .. 'RefThis()("text").*' + \ .. '\d DCALL RefThis(argc 0).*' + \ .. '\d PUSHS "text".*' + \ .. '\d PCALL top (argc 1).*' + \ .. '\d PCALL end.*' + \ .. '\d DROP.*' + \ .. '\d PUSHNR 0.*' + \ .. '\d RETURN.*' + \, res) +enddef + + def FuncWithForwardCall(): string return DefinedLater("yes") enddef diff --git a/src/testdir/test_vim9_script.vim b/src/testdir/test_vim9_script.vim index f6cb15fd4..19df73c5e 100644 --- a/src/testdir/test_vim9_script.vim +++ b/src/testdir/test_vim9_script.vim @@ -260,9 +260,10 @@ func TakesOneArg(arg) echo a:arg endfunc -def Test_call_wrong_arg_count() +def Test_call_wrong_args() call CheckDefFailure(['TakesOneArg()'], 'E119:') call CheckDefFailure(['TakesOneArg(11, 22)'], 'E118:') + call CheckDefFailure(['bufnr(xxx)'], 'E1001:') enddef " Default arg and varargs @@ -1029,6 +1030,14 @@ def Test_while_loop() assert_equal('1_3_', result) enddef +def Test_for_loop_fails() + call CheckDefFailure(['for # in range(5)'], 'E690:') + call CheckDefFailure(['for i In range(5)'], 'E690:') + call CheckDefFailure(['let x = 5', 'for x in range(5)'], 'E1023:') + call CheckScriptFailure(['def Func(arg)', 'for arg in range(5)', 'enddef'], 'E1006:') + call CheckDefFailure(['for i in "text"'], 'E1024:') +enddef + def Test_interrupt_loop() let caught = false let x = 0 |