diff options
author | Bram Moolenaar <Bram@vim.org> | 2020-04-23 22:16:53 +0200 |
---|---|---|
committer | Bram Moolenaar <Bram@vim.org> | 2020-04-23 22:16:53 +0200 |
commit | f93c7fea084a99848d512ff2732041d4b41d93c8 (patch) | |
tree | bb6bba558d4157bb5ea1f6b2b7d0ae37cf10234f /src/testdir | |
parent | 1df8b3fb04ce8732a0be680273c95eb4e9f5e85d (diff) | |
download | vim-git-f93c7fea084a99848d512ff2732041d4b41d93c8.tar.gz |
patch 8.2.0626: Vim9: wrong syntax of function in Vim9 scriptv8.2.0626
Problem: Vim9: wrong syntax of function in Vim9 script.
Solution: Give error for missing space. Implement :echomsg and :echoerr.
(closes #5670)
Diffstat (limited to 'src/testdir')
-rw-r--r-- | src/testdir/test_vim9_disassemble.vim | 22 | ||||
-rw-r--r-- | src/testdir/test_vim9_func.vim | 15 | ||||
-rw-r--r-- | src/testdir/test_vim9_script.vim | 18 |
3 files changed, 55 insertions, 0 deletions
diff --git a/src/testdir/test_vim9_disassemble.vim b/src/testdir/test_vim9_disassemble.vim index 781495278..89ca66f11 100644 --- a/src/testdir/test_vim9_disassemble.vim +++ b/src/testdir/test_vim9_disassemble.vim @@ -919,6 +919,28 @@ def Test_disassemble_execute() res) enddef +def s:Echomsg() + echomsg 'some' 'message' + echoerr 'went' .. 'wrong' +enddef + +def Test_disassemble_echomsg() + let res = execute('disass s:Echomsg') + assert_match('\<SNR>\d*_Echomsg.*' .. + "echomsg 'some' 'message'.*" .. + '\d PUSHS "some".*' .. + '\d PUSHS "message".*' .. + '\d ECHOMSG 2.*' .. + "echoerr 'went' .. 'wrong'.*" .. + '\d PUSHS "went".*' .. + '\d PUSHS "wrong".*' .. + '\d CONCAT.*' .. + '\d ECHOERR 1.*' .. + '\d PUSHNR 0.*' .. + '\d RETURN', + res) +enddef + def SomeStringArg(arg: string) echo arg enddef diff --git a/src/testdir/test_vim9_func.vim b/src/testdir/test_vim9_func.vim index d36467996..f3721ba9f 100644 --- a/src/testdir/test_vim9_func.vim +++ b/src/testdir/test_vim9_func.vim @@ -259,6 +259,7 @@ enddef def Test_arg_type_wrong() CheckScriptFailure(['def Func3(items: list)', 'echo "a"', 'enddef'], 'E1008: Missing <type>') CheckScriptFailure(['def Func4(...)', 'echo "a"', 'enddef'], 'E1055: Missing name after ...') + CheckScriptFailure(['def Func5(items:string)', 'echo "a"'], 'E1069:') CheckScriptFailure(['def Func5(items)', 'echo "a"'], 'E1077:') enddef @@ -390,6 +391,20 @@ def Test_redef_failure() delfunc! Func2 enddef +def Test_vim9script_func() + let lines =<< trim END + vim9script + func Func(arg) + echo a:arg + endfunc + Func('text') + END + writefile(lines, 'XVim9Func') + so XVim9Func + + delete('XVim9Func') +enddef + " Test for internal functions returning different types func Test_InternalFuncRetType() let lines =<< trim END diff --git a/src/testdir/test_vim9_script.vim b/src/testdir/test_vim9_script.vim index 5eda50b73..f06bb734c 100644 --- a/src/testdir/test_vim9_script.vim +++ b/src/testdir/test_vim9_script.vim @@ -54,6 +54,10 @@ def Test_assignment() let dict4: dict<any> = #{one: 1, two: '2'} let dict5: dict<blob> = #{one: 0z01, tw: 0z02} + call CheckDefFailure(['let x:string'], 'E1069:') + call CheckDefFailure(['let x:string = "x"'], 'E1069:') + call CheckDefFailure(['let a:string = "x"'], 'E1082:') + let a: number = 6 assert_equal(6, a) @@ -976,6 +980,20 @@ def Test_echo_cmd() call CheckDefFailure(['echo "xxx"# comment'], 'E488:') enddef +def Test_echomsg_cmd() + echomsg 'some' 'more' # comment + assert_match('^some more$', Screenline(&lines)) + echo 'clear' + 1messages + assert_match('^some more$', Screenline(&lines)) + + call CheckDefFailure(['echomsg "xxx"# comment'], 'E488:') +enddef + +def Test_echoerr_cmd() + # TODO: write this test +enddef + def Test_for_outside_of_function() let lines =<< trim END vim9script |