summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/evalfunc.c9
-rw-r--r--src/popupwin.c6
-rw-r--r--src/testdir/test_vim9_func.vim14
-rw-r--r--src/version.c2
4 files changed, 27 insertions, 4 deletions
diff --git a/src/evalfunc.c b/src/evalfunc.c
index cf1e26533..7bc4f05f5 100644
--- a/src/evalfunc.c
+++ b/src/evalfunc.c
@@ -270,6 +270,11 @@ ret_any(int argcount UNUSED, type_T **argtypes UNUSED)
return &t_any;
}
static type_T *
+ret_bool(int argcount UNUSED, type_T **argtypes UNUSED)
+{
+ return &t_bool;
+}
+ static type_T *
ret_number(int argcount UNUSED, type_T **argtypes UNUSED)
{
return &t_number;
@@ -793,8 +798,8 @@ static funcentry_T global_functions[] =
{"popup_close", 1, 2, FEARG_1, ret_void, PROP_FUNC(f_popup_close)},
{"popup_create", 2, 2, FEARG_1, ret_number, PROP_FUNC(f_popup_create)},
{"popup_dialog", 2, 2, FEARG_1, ret_number, PROP_FUNC(f_popup_dialog)},
- {"popup_filter_menu", 2, 2, 0, ret_number, PROP_FUNC(f_popup_filter_menu)},
- {"popup_filter_yesno", 2, 2, 0, ret_number, PROP_FUNC(f_popup_filter_yesno)},
+ {"popup_filter_menu", 2, 2, 0, ret_bool, PROP_FUNC(f_popup_filter_menu)},
+ {"popup_filter_yesno", 2, 2, 0, ret_bool, PROP_FUNC(f_popup_filter_yesno)},
{"popup_findinfo", 0, 0, 0, ret_number, PROP_FUNC(f_popup_findinfo)},
{"popup_findpreview", 0, 0, 0, ret_number, PROP_FUNC(f_popup_findpreview)},
{"popup_getoptions", 1, 1, FEARG_1, ret_dict_any, PROP_FUNC(f_popup_getoptions)},
diff --git a/src/popupwin.c b/src/popupwin.c
index 777e7d84b..2868a9da3 100644
--- a/src/popupwin.c
+++ b/src/popupwin.c
@@ -2375,7 +2375,8 @@ f_popup_filter_menu(typval_T *argvars, typval_T *rettv)
c = TO_SPECIAL(key[1], key[2]);
// consume all keys until done
- rettv->vval.v_number = 1;
+ rettv->v_type = VAR_BOOL;
+ rettv->vval.v_number = VVAL_TRUE;
res.v_type = VAR_NUMBER;
old_lnum = wp->w_cursor.lnum;
@@ -2429,7 +2430,8 @@ f_popup_filter_yesno(typval_T *argvars, typval_T *rettv)
c = TO_SPECIAL(key[1], key[2]);
// consume all keys until done
- rettv->vval.v_number = 1;
+ rettv->v_type = VAR_BOOL;
+ rettv->vval.v_number = VVAL_TRUE;
if (c == 'y' || c == 'Y')
res.vval.v_number = 1;
diff --git a/src/testdir/test_vim9_func.vim b/src/testdir/test_vim9_func.vim
index 6ff23e95a..cc6af6a86 100644
--- a/src/testdir/test_vim9_func.vim
+++ b/src/testdir/test_vim9_func.vim
@@ -94,6 +94,20 @@ def Test_missing_return()
'enddef'], 'E1095:')
enddef
+def Test_return_bool()
+ var lines =<< trim END
+ vim9script
+ def MenuFilter(id: number, key: string): bool
+ return popup_filter_menu(id, key)
+ enddef
+ def YesnoFilter(id: number, key: string): bool
+ return popup_filter_yesno(id, key)
+ enddef
+ defcompile
+ END
+ CheckScriptSuccess(lines)
+enddef
+
let s:nothing = 0
def ReturnNothing()
s:nothing = 1
diff --git a/src/version.c b/src/version.c
index 6ea39c07e..cdecc3ab4 100644
--- a/src/version.c
+++ b/src/version.c
@@ -751,6 +751,8 @@ static char *(features[]) =
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
+ 1858,
+/**/
1857,
/**/
1856,