summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBram Moolenaar <Bram@vim.org>2021-09-04 14:49:56 +0200
committerBram Moolenaar <Bram@vim.org>2021-09-04 14:49:56 +0200
commit10c83dde554b57ab4db71b96a0a02a5b6d1798e9 (patch)
treee44dd73fc8eeadec413682e604252a35352218c0
parent7f2dd1e90c1d4a30c791fae20014594641769a1e (diff)
patch 8.2.3401: Vim9: cannot use negative count with finddir() and findfile()v8.2.3401
Problem: Vim9: cannot use a negative count with finddir() and findfile(). Solution: Adjust the return type. (closes #8776)
-rw-r--r--src/evalfunc.c4
-rw-r--r--src/testdir/test_vim9_builtin.vim14
-rw-r--r--src/version.c2
3 files changed, 18 insertions, 2 deletions
diff --git a/src/evalfunc.c b/src/evalfunc.c
index fd385fea37..b3f69c1f3b 100644
--- a/src/evalfunc.c
+++ b/src/evalfunc.c
@@ -1354,9 +1354,9 @@ static funcentry_T global_functions[] =
{"filter", 2, 2, FEARG_1, arg2_mapfilter,
ret_first_arg, f_filter},
{"finddir", 1, 3, FEARG_1, arg3_string_string_number,
- ret_string, f_finddir},
+ ret_any, f_finddir},
{"findfile", 1, 3, FEARG_1, arg3_string_string_number,
- ret_string, f_findfile},
+ ret_any, f_findfile},
{"flatten", 1, 2, FEARG_1, arg2_list_any_number,
ret_list_any, f_flatten},
{"flattennew", 1, 2, FEARG_1, arg2_list_any_number,
diff --git a/src/testdir/test_vim9_builtin.vim b/src/testdir/test_vim9_builtin.vim
index c166a43a6b..d39a5e22ec 100644
--- a/src/testdir/test_vim9_builtin.vim
+++ b/src/testdir/test_vim9_builtin.vim
@@ -1027,6 +1027,14 @@ def Test_filewritable()
enddef
def Test_finddir()
+ mkdir('Xtestdir')
+ finddir('Xtestdir', '**', -1)->assert_equal(['Xtestdir'])
+ var lines =<< trim END
+ var l: list<string> = finddir('nothing', '*;', -1)
+ END
+ CheckDefAndScriptSuccess(lines)
+ delete('Xtestdir', 'rf')
+
CheckDefAndScriptFailure2(['finddir(true)'], 'E1013: Argument 1: type mismatch, expected string but got bool', 'E1174: String required for argument 1')
CheckDefAndScriptFailure2(['finddir(v:null)'], 'E1013: Argument 1: type mismatch, expected string but got special', 'E1174: String required for argument 1')
CheckDefExecFailure(['echo finddir("")'], 'E1175:')
@@ -1035,6 +1043,12 @@ def Test_finddir()
enddef
def Test_findfile()
+ findfile('runtest.vim', '**', -1)->assert_equal(['runtest.vim'])
+ var lines =<< trim END
+ var l: list<string> = findfile('nothing', '*;', -1)
+ END
+ CheckDefAndScriptSuccess(lines)
+
CheckDefExecFailure(['findfile(true)'], 'E1013: Argument 1: type mismatch, expected string but got bool')
CheckDefExecFailure(['findfile(v:null)'], 'E1013: Argument 1: type mismatch, expected string but got special')
CheckDefExecFailure(['findfile("")'], 'E1175:')
diff --git a/src/version.c b/src/version.c
index 7482d3f7fd..8f502cc9c6 100644
--- a/src/version.c
+++ b/src/version.c
@@ -756,6 +756,8 @@ static char *(features[]) =
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
+ 3401,
+/**/
3400,
/**/
3399,