mirror of
https://github.com/vim/vim.git
synced 2025-09-28 04:24:06 -04:00
patch 8.2.1858: Vim9: filter functions return number instead of bool
Problem: Vim9: filter functions return number instead of bool. Solution: Return v:true instead of one. (closes #7144)
This commit is contained in:
@@ -270,6 +270,11 @@ ret_any(int argcount UNUSED, type_T **argtypes UNUSED)
|
|||||||
return &t_any;
|
return &t_any;
|
||||||
}
|
}
|
||||||
static type_T *
|
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)
|
ret_number(int argcount UNUSED, type_T **argtypes UNUSED)
|
||||||
{
|
{
|
||||||
return &t_number;
|
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_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_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_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_menu", 2, 2, 0, ret_bool, PROP_FUNC(f_popup_filter_menu)},
|
||||||
{"popup_filter_yesno", 2, 2, 0, ret_number, PROP_FUNC(f_popup_filter_yesno)},
|
{"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_findinfo", 0, 0, 0, ret_number, PROP_FUNC(f_popup_findinfo)},
|
||||||
{"popup_findpreview", 0, 0, 0, ret_number, PROP_FUNC(f_popup_findpreview)},
|
{"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)},
|
{"popup_getoptions", 1, 1, FEARG_1, ret_dict_any, PROP_FUNC(f_popup_getoptions)},
|
||||||
|
@@ -2375,7 +2375,8 @@ f_popup_filter_menu(typval_T *argvars, typval_T *rettv)
|
|||||||
c = TO_SPECIAL(key[1], key[2]);
|
c = TO_SPECIAL(key[1], key[2]);
|
||||||
|
|
||||||
// consume all keys until done
|
// 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;
|
res.v_type = VAR_NUMBER;
|
||||||
|
|
||||||
old_lnum = wp->w_cursor.lnum;
|
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]);
|
c = TO_SPECIAL(key[1], key[2]);
|
||||||
|
|
||||||
// consume all keys until done
|
// 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')
|
if (c == 'y' || c == 'Y')
|
||||||
res.vval.v_number = 1;
|
res.vval.v_number = 1;
|
||||||
|
@@ -94,6 +94,20 @@ def Test_missing_return()
|
|||||||
'enddef'], 'E1095:')
|
'enddef'], 'E1095:')
|
||||||
enddef
|
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
|
let s:nothing = 0
|
||||||
def ReturnNothing()
|
def ReturnNothing()
|
||||||
s:nothing = 1
|
s:nothing = 1
|
||||||
|
@@ -750,6 +750,8 @@ static char *(features[]) =
|
|||||||
|
|
||||||
static int included_patches[] =
|
static int included_patches[] =
|
||||||
{ /* Add new patch number below this line */
|
{ /* Add new patch number below this line */
|
||||||
|
/**/
|
||||||
|
1858,
|
||||||
/**/
|
/**/
|
||||||
1857,
|
1857,
|
||||||
/**/
|
/**/
|
||||||
|
Reference in New Issue
Block a user