changeset 25731:f35efe44dacd v8.2.3401

patch 8.2.3401: Vim9: cannot use negative count with finddir() and findfile() Commit: https://github.com/vim/vim/commit/10c83dde554b57ab4db71b96a0a02a5b6d1798e9 Author: Bram Moolenaar <Bram@vim.org> Date: Sat Sep 4 14:49:56 2021 +0200 patch 8.2.3401: Vim9: cannot use negative count with finddir() and findfile() Problem: Vim9: cannot use a negative count with finddir() and findfile(). Solution: Adjust the return type. (closes https://github.com/vim/vim/issues/8776)
author Bram Moolenaar <Bram@vim.org>
date Sat, 04 Sep 2021 15:00:02 +0200
parents 10adc0110045
children ce563c56a454
files src/evalfunc.c src/testdir/test_vim9_builtin.vim src/version.c
diffstat 3 files changed, 18 insertions(+), 2 deletions(-) [+]
line wrap: on
line diff
--- 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,
--- 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:')
--- 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,