# HG changeset patch # User Bram Moolenaar # Date 1588707004 -7200 # Node ID ce1b73835822d5a5aa2d9f8a97a5855e4e9dfd93 # Parent a7b6adc814f1ef6fa5f70834eb582eed370bed43 patch 8.2.0699: Vim9: not all errors tested Commit: https://github.com/vim/vim/commit/015f4267f4a28627c1872042078a95be7e06c4dc Author: Bram Moolenaar Date: Tue May 5 21:25:22 2020 +0200 patch 8.2.0699: Vim9: not all errors tested Problem: Vim9: not all errors tested. Solution: Add test for deleted function. Bail out on first error. diff --git a/src/testdir/test_vim9_expr.vim b/src/testdir/test_vim9_expr.vim --- a/src/testdir/test_vim9_expr.vim +++ b/src/testdir/test_vim9_expr.vim @@ -759,11 +759,11 @@ def Test_expr7_list() assert_equal(g:list_mixed, [1, 'b', false]) assert_equal('b', g:list_mixed[1]) - call CheckDefExecFailure("let x = g:anint[3]", 'E714:') + call CheckDefExecFailure(["let x = g:anint[3]"], 'E714:') call CheckDefFailure(["let x = g:list_mixed[xxx]"], 'E1001:') - call CheckDefExecFailure("let x = g:list_mixed['xx']", 'E39:') + call CheckDefExecFailure(["let x = g:list_mixed['xx']"], 'E39:') call CheckDefFailure(["let x = g:list_mixed[0"], 'E111:') - call CheckDefExecFailure("let x = g:list_empty[3]", 'E684:') + call CheckDefExecFailure(["let x = g:list_empty[3]"], 'E684:') enddef def Test_expr7_lambda() @@ -792,8 +792,8 @@ def Test_expr7_dict() call CheckDefFailure(["let x = #"], 'E1015:') call CheckDefFailure(["let x += 1"], 'E1020:') call CheckDefFailure(["let x = x + 1"], 'E1001:') - call CheckDefExecFailure("let x = g:anint.member", 'E715:') - call CheckDefExecFailure("let x = g:dict_empty.member", 'E716:') + call CheckDefExecFailure(["let x = g:anint.member"], 'E715:') + call CheckDefExecFailure(["let x = g:dict_empty.member"], 'E716:') enddef def Test_expr_member() @@ -899,8 +899,8 @@ func Test_expr7_fails() call CheckDefFailure(["let x = -'xx'"], "E1030:") call CheckDefFailure(["let x = +'xx'"], "E1030:") call CheckDefFailure(["let x = -0z12"], "E974:") - call CheckDefExecFailure("let x = -[8]", "E39:") - call CheckDefExecFailure("let x = -{'a': 1}", "E39:") + call CheckDefExecFailure(["let x = -[8]"], "E39:") + call CheckDefExecFailure(["let x = -{'a': 1}"], "E39:") call CheckDefFailure(["let x = @"], "E1002:") call CheckDefFailure(["let x = @<"], "E354:") @@ -914,23 +914,23 @@ func Test_expr7_fails() call CheckDefFailure(["let x = ¬exist"], 'E113:') call CheckDefFailure(["&grepprg = [343]"], 'E1013:') - call CheckDefExecFailure("echo s:doesnt_exist", 'E121:') - call CheckDefExecFailure("echo g:doesnt_exist", 'E121:') + call CheckDefExecFailure(["echo s:doesnt_exist"], 'E121:') + call CheckDefExecFailure(["echo g:doesnt_exist"], 'E121:') call CheckDefFailure(["echo a:somevar"], 'E1075:') call CheckDefFailure(["echo l:somevar"], 'E1075:') call CheckDefFailure(["echo x:somevar"], 'E1075:') - call CheckDefExecFailure("let x = +g:astring", 'E1030:') - call CheckDefExecFailure("let x = +g:ablob", 'E974:') - call CheckDefExecFailure("let x = +g:alist", 'E745:') - call CheckDefExecFailure("let x = +g:adict", 'E728:') + call CheckDefExecFailure(["let x = +g:astring"], 'E1030:') + call CheckDefExecFailure(["let x = +g:ablob"], 'E974:') + call CheckDefExecFailure(["let x = +g:alist"], 'E745:') + call CheckDefExecFailure(["let x = +g:adict"], 'E728:') call CheckDefFailure(["let x = ''", "let y = x.memb"], 'E715:') - call CheckDefExecFailure("[1, 2->len()", 'E492:') - call CheckDefExecFailure("#{a: 1->len()", 'E488:') - call CheckDefExecFailure("{'a': 1->len()", 'E492:') + call CheckDefExecFailure(["[1, 2->len()"], 'E492:') + call CheckDefExecFailure(["#{a: 1->len()"], 'E488:') + call CheckDefExecFailure(["{'a': 1->len()"], 'E492:') endfunc let g:Funcrefs = [function('add')] @@ -986,7 +986,7 @@ func Test_expr_fails() call CheckDefFailure(["let x = '1'is2"], 'E488:') call CheckDefFailure(["let x = '1'isnot2"], 'E488:') - call CheckDefExecFailure("CallMe ('yes')", 'E492:') + call CheckDefExecFailure(["CallMe ('yes')"], 'E492:') call CheckDefFailure(["CallMe2('yes','no')"], 'E1069:') call CheckDefFailure(["CallMe2('yes' , 'no')"], 'E1068:') diff --git a/src/testdir/test_vim9_func.vim b/src/testdir/test_vim9_func.vim --- a/src/testdir/test_vim9_func.vim +++ b/src/testdir/test_vim9_func.vim @@ -642,6 +642,23 @@ func Test_E1056_1059() call assert_equal(1, caught_1059) endfunc +func DelMe() + echo 'DelMe' +endfunc + +def Test_deleted_function() + CheckDefExecFailure([ + 'let RefMe: func = function("g:DelMe")', + 'delfunc g:DelMe', + 'echo RefMe()'], 'E117:') +enddef + +def Test_unknown_function() + CheckDefExecFailure([ + 'let Ref: func = function("NotExist")', + 'delfunc g:NotExist'], 'E700:') +enddef + def RefFunc(Ref: func(string): string): string return Ref('more') enddef diff --git a/src/testdir/vim9.vim b/src/testdir/vim9.vim --- a/src/testdir/vim9.vim +++ b/src/testdir/vim9.vim @@ -7,6 +7,14 @@ func CheckDefFailure(lines, error) call delete('Xdef') endfunc +" Check that "lines" inside ":def" results in an "error" message when executed. +func CheckDefExecFailure(lines, error) + call writefile(['def Func()'] + a:lines + ['enddef'], 'Xdef') + so Xdef + call assert_fails('call Func()', a:error, a:lines) + call delete('Xdef') +endfunc + def CheckScriptFailure(lines: list, error: string) writefile(lines, 'Xdef') assert_fails('so Xdef', error, lines) @@ -18,11 +26,3 @@ def CheckScriptSuccess(lines: list