summaryrefslogtreecommitdiff
path: root/src/testdir
diff options
context:
space:
mode:
authorBram Moolenaar <Bram@vim.org>2020-03-31 23:13:10 +0200
committerBram Moolenaar <Bram@vim.org>2020-03-31 23:13:10 +0200
commitbd5da371aafe5a2207065643502f4d1ff6b286c7 (patch)
treea76f8259b8caaf9d223063d307da28a5ea049c15 /src/testdir
parent9be61bbb170ed3df0e408c8ac12516e772dc0b75 (diff)
downloadvim-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.vim25
-rw-r--r--src/testdir/test_vim9_script.vim11
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