summaryrefslogtreecommitdiffstats
path: root/src/evalfunc.c
diff options
context:
space:
mode:
authorBram Moolenaar <Bram@vim.org>2021-12-22 18:45:37 +0000
committerBram Moolenaar <Bram@vim.org>2021-12-22 18:45:37 +0000
commit080182216e605df3428cc699b9fd7e761368d12f (patch)
treeab39f866f2e44cbd3bfaac8ff6b5a8ea2593531f /src/evalfunc.c
parentf973eeb4911de09258e84cb2248dc0f9392824b4 (diff)
patch 8.2.3872: Vim9: finddir() and uniq() return types can be more specificv8.2.3872
Problem: Vim9: finddir() and uniq() return types can be more specific. Solution: Adjust the return type.
Diffstat (limited to 'src/evalfunc.c')
-rw-r--r--src/evalfunc.c13
1 files changed, 11 insertions, 2 deletions
diff --git a/src/evalfunc.c b/src/evalfunc.c
index 39b94deb97..f42650ebb2 100644
--- a/src/evalfunc.c
+++ b/src/evalfunc.c
@@ -1033,6 +1033,15 @@ ret_first_cont(int argcount, type_T **argtypes)
}
return &t_any;
}
+// for finddir()
+ static type_T *
+ret_finddir(int argcount, type_T **argtypes UNUSED)
+{
+ if (argcount < 3)
+ return &t_string;
+ // Depending on the count would be a string or a list of strings.
+ return &t_any;
+}
/*
* Used for getqflist(): returns list if there is no argument, dict if there is
@@ -1431,7 +1440,7 @@ 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_any, f_finddir},
+ ret_finddir, f_finddir},
{"findfile", 1, 3, FEARG_1, arg3_string_string_number,
ret_any, f_findfile},
{"flatten", 1, 2, FEARG_1, arg2_list_any_number,
@@ -2291,7 +2300,7 @@ static funcentry_T global_functions[] =
{"undotree", 0, 0, 0, NULL,
ret_dict_any, f_undotree},
{"uniq", 1, 3, FEARG_1, arg13_sortuniq,
- ret_list_any, f_uniq},
+ ret_first_arg, f_uniq},
{"values", 1, 1, FEARG_1, arg1_dict_any,
ret_list_any, f_values},
{"virtcol", 1, 1, FEARG_1, arg1_string_or_list_any,