aboutsummaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
authorzeertzjq <zeertzjq@outlook.com>2023-04-16 10:51:27 +0800
committerzeertzjq <zeertzjq@outlook.com>2023-04-16 15:04:41 +0800
commit335bef0c211dc962499814d248670ff17758a642 (patch)
tree808c44bc0f507ad155927b41596a0408d0559a8d /test
parent0167649ce4071e60d985b65f3f9408ffb21cb58c (diff)
downloadrneovim-335bef0c211dc962499814d248670ff17758a642.tar.gz
rneovim-335bef0c211dc962499814d248670ff17758a642.tar.bz2
rneovim-335bef0c211dc962499814d248670ff17758a642.zip
vim-patch:9.0.0390: cannot use a partial with :defer
Problem: Cannot use a partial with :defer. Solution: Add the partial arguments before the other arguments. Disallow using a dictionary. https://github.com/vim/vim/commit/86d87256c4005c6215da5af2597fbf6f6304421f Co-authored-by: Bram Moolenaar <Bram@vim.org>
Diffstat (limited to 'test')
-rw-r--r--test/old/testdir/test_user_func.vim25
1 files changed, 23 insertions, 2 deletions
diff --git a/test/old/testdir/test_user_func.vim b/test/old/testdir/test_user_func.vim
index 3579954fe6..fd70d1acb0 100644
--- a/test/old/testdir/test_user_func.vim
+++ b/test/old/testdir/test_user_func.vim
@@ -532,8 +532,11 @@ func Test_funcdef_alloc_failure()
bw!
endfunc
-func AddDefer(arg)
- call extend(g:deferred, [a:arg])
+func AddDefer(arg1, ...)
+ call extend(g:deferred, [a:arg1])
+ if a:0 == 1
+ call extend(g:deferred, [a:1])
+ endif
endfunc
func WithDeferTwo()
@@ -553,6 +556,13 @@ func WithDeferOne()
call extend(g:deferred, ['end One'])
endfunc
+func WithPartialDefer()
+ call extend(g:deferred, ['in Partial'])
+ let Part = funcref('AddDefer', ['arg1'])
+ defer Part("arg2")
+ call extend(g:deferred, ['end Partial'])
+endfunc
+
func Test_defer()
let g:deferred = []
call WithDeferOne()
@@ -561,6 +571,17 @@ func Test_defer()
unlet g:deferred
call assert_equal('', glob('Xfuncdefer'))
+
+ call assert_fails('defer delete("Xfuncdefer")->Another()', 'E488:')
+ call assert_fails('defer delete("Xfuncdefer").member', 'E488:')
+
+ let g:deferred = []
+ call WithPartialDefer()
+ call assert_equal(['in Partial', 'end Partial', 'arg1', 'arg2'], g:deferred)
+ unlet g:deferred
+
+ let Part = funcref('AddDefer', ['arg1'], {})
+ call assert_fails('defer Part("arg2")', 'E1300:')
endfunc