diff options
author | zeertzjq <zeertzjq@outlook.com> | 2023-04-16 07:50:18 +0800 |
---|---|---|
committer | zeertzjq <zeertzjq@outlook.com> | 2023-04-16 15:04:40 +0800 |
commit | b75634e55ee4cdfee7917b29f39e3ca1307cb059 (patch) | |
tree | da8d1238434caa88c4db1b511b68d499be4809f0 /test | |
parent | 54dab9ed9e200f7c5bcac4a8f4901770fa15fa4f (diff) | |
download | rneovim-b75634e55ee4cdfee7917b29f39e3ca1307cb059.tar.gz rneovim-b75634e55ee4cdfee7917b29f39e3ca1307cb059.tar.bz2 rneovim-b75634e55ee4cdfee7917b29f39e3ca1307cb059.zip |
vim-patch:9.0.0370: cleaning up afterwards can make a function messy
Problem: Cleaning up afterwards can make a function messy.
Solution: Add the :defer command.
https://github.com/vim/vim/commit/1d84f7608f1e41dad03b8cc7925895437775f7c0
Omit EX_EXPR_ARG: Vim9 script only.
Make :def throw E319 to avoid confusing behavior.
Co-authored-by: Bram Moolenaar <Bram@vim.org>
Diffstat (limited to 'test')
-rw-r--r-- | test/old/testdir/test_user_func.vim | 32 |
1 files changed, 32 insertions, 0 deletions
diff --git a/test/old/testdir/test_user_func.vim b/test/old/testdir/test_user_func.vim index f475803ce1..3579954fe6 100644 --- a/test/old/testdir/test_user_func.vim +++ b/test/old/testdir/test_user_func.vim @@ -532,4 +532,36 @@ func Test_funcdef_alloc_failure() bw! endfunc +func AddDefer(arg) + call extend(g:deferred, [a:arg]) +endfunc + +func WithDeferTwo() + call extend(g:deferred, ['in Two']) + for nr in range(3) + defer AddDefer('Two' .. nr) + endfor + call extend(g:deferred, ['end Two']) +endfunc + +func WithDeferOne() + call extend(g:deferred, ['in One']) + call writefile(['text'], 'Xfuncdefer') + defer delete('Xfuncdefer') + defer AddDefer('One') + call WithDeferTwo() + call extend(g:deferred, ['end One']) +endfunc + +func Test_defer() + let g:deferred = [] + call WithDeferOne() + + call assert_equal(['in One', 'in Two', 'end Two', 'Two2', 'Two1', 'Two0', 'end One', 'One'], g:deferred) + unlet g:deferred + + call assert_equal('', glob('Xfuncdefer')) +endfunc + + " vim: shiftwidth=2 sts=2 expandtab |