Mercurial > vim
diff src/testdir/test_vim9_func.vim @ 25609:f8bcd21e6e24 v8.2.3341
patch 8.2.3341: Vim9: function call aborted despite try/catch
Commit: https://github.com/vim/vim/commit/88c89c77229e725ab2613b022249e2f506d82b82
Author: Bram Moolenaar <Bram@vim.org>
Date: Sat Aug 14 14:01:05 2021 +0200
patch 8.2.3341: Vim9: function call aborted despite try/catch
Problem: Vim9: function call aborted despite try/catch. (Naohiro Ono)
Solution: Ignore error caught by try/catch. (closes https://github.com/vim/vim/issues/8755)
author | Bram Moolenaar <Bram@vim.org> |
---|---|
date | Sat, 14 Aug 2021 14:15:03 +0200 |
parents | d8fb5bb88362 |
children | c26eb08a0df2 |
line wrap: on
line diff
--- a/src/testdir/test_vim9_func.vim +++ b/src/testdir/test_vim9_func.vim @@ -160,6 +160,52 @@ def Test_autoload_names() delete(dir, 'rf') enddef +def Test_autoload_error_in_script() + var dir = 'Xdir/autoload' + mkdir(dir, 'p') + + var lines =<< trim END + func scripterror#function() + let g:called_function = 'yes' + endfunc + let 0 = 1 + END + writefile(lines, dir .. '/scripterror.vim') + + var save_rtp = &rtp + exe 'set rtp=' .. getcwd() .. '/Xdir' + + g:called_function = 'no' + # The error in the autoload script cannot be checked with assert_fails(), use + # CheckDefSuccess() instead of CheckDefFailure() + try + CheckDefSuccess(['scripterror#function()']) + catch + assert_match('E121: Undefined variable: 0', v:exception) + endtry + assert_equal('no', g:called_function) + + lines =<< trim END + func scriptcaught#function() + let g:called_function = 'yes' + endfunc + try + let 0 = 1 + catch + let g:caught = v:exception + endtry + END + writefile(lines, dir .. '/scriptcaught.vim') + + g:called_function = 'no' + CheckDefSuccess(['scriptcaught#function()']) + assert_match('E121: Undefined variable: 0', g:caught) + assert_equal('yes', g:called_function) + + &rtp = save_rtp + delete(dir, 'rf') +enddef + def CallRecursive(n: number): number return CallRecursive(n + 1) enddef