summaryrefslogtreecommitdiff
path: root/src/testdir
diff options
context:
space:
mode:
authorBram Moolenaar <Bram@vim.org>2020-04-23 22:16:53 +0200
committerBram Moolenaar <Bram@vim.org>2020-04-23 22:16:53 +0200
commitf93c7fea084a99848d512ff2732041d4b41d93c8 (patch)
treebb6bba558d4157bb5ea1f6b2b7d0ae37cf10234f /src/testdir
parent1df8b3fb04ce8732a0be680273c95eb4e9f5e85d (diff)
downloadvim-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.vim22
-rw-r--r--src/testdir/test_vim9_func.vim15
-rw-r--r--src/testdir/test_vim9_script.vim18
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