aboutsummaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
authorzeertzjq <zeertzjq@outlook.com>2023-04-16 07:50:18 +0800
committerzeertzjq <zeertzjq@outlook.com>2023-04-16 15:04:40 +0800
commitb75634e55ee4cdfee7917b29f39e3ca1307cb059 (patch)
treeda8d1238434caa88c4db1b511b68d499be4809f0 /test
parent54dab9ed9e200f7c5bcac4a8f4901770fa15fa4f (diff)
downloadrneovim-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.vim32
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