0
0
mirror of https://github.com/vim/vim.git synced 2025-09-07 22:03:36 -04:00

patch 8.2.3154: Vim9: some type checks for builtin functions fail

Problem:    Vim9: some type checks for builtin functions fail.
Solution:   Correct the type checks. (Yegappan Lakshmanan, closes #8551,
            closes #8550)
This commit is contained in:
Yegappan Lakshmanan 2021-07-11 22:04:25 +02:00 committed by Bram Moolenaar
parent 7b7a118e74
commit 841e498c5d
3 changed files with 21 additions and 3 deletions

View File

@ -431,9 +431,10 @@ arg_item_of_prev(type_T *type, argcontext_T *context)
static int
arg_str_or_nr_or_list(type_T *type, argcontext_T *context)
{
if (type->tt_type == VAR_STRING
|| type->tt_type == VAR_NUMBER
|| type->tt_type == VAR_LIST)
if (type->tt_type == VAR_ANY
|| type->tt_type == VAR_STRING
|| type->tt_type == VAR_NUMBER
|| type->tt_type == VAR_LIST)
return OK;
arg_type_mismatch(&t_string, type, context->arg_idx + 1);
return FAIL;

View File

@ -1523,6 +1523,12 @@ enddef
def Test_popup_atcursor()
CheckDefAndScriptFailure2(['popup_atcursor({"a": 10}, {})'], 'E1013: Argument 1: type mismatch, expected string but got dict<number>', 'E450: buffer number, text or a list required')
CheckDefAndScriptFailure2(['popup_atcursor("a", [1, 2])'], 'E1013: Argument 2: type mismatch, expected dict<any> but got list<number>', 'E715: Dictionary required')
# Pass variable of type 'any' to popup_atcursor()
var what: any = 'Hello'
var popupID = what->popup_atcursor({moved: 'any'})
assert_equal(0, popupID->popup_getoptions().tabpage)
popupID->popup_close()
enddef
def Test_popup_beval()
@ -1530,6 +1536,14 @@ def Test_popup_beval()
CheckDefAndScriptFailure2(['popup_beval("a", [1, 2])'], 'E1013: Argument 2: type mismatch, expected dict<any> but got list<number>', 'E715: Dictionary required')
enddef
def Test_popup_create()
# Pass variable of type 'any' to popup_create()
var what: any = 'Hello'
var popupID = what->popup_create({})
assert_equal(0, popupID->popup_getoptions().tabpage)
popupID->popup_close()
enddef
def Test_popup_dialog()
CheckDefAndScriptFailure2(['popup_dialog({"a": 10}, {})'], 'E1013: Argument 1: type mismatch, expected string but got dict<number>', 'E450: buffer number, text or a list required')
CheckDefAndScriptFailure2(['popup_dialog("a", [1, 2])'], 'E1013: Argument 2: type mismatch, expected dict<any> but got list<number>', 'E715: Dictionary required')
@ -2358,6 +2372,7 @@ def Test_virtcol()
setline(1, ['abcdefgh'])
cursor(1, 4)
assert_equal(4, virtcol('.'))
assert_equal(4, virtcol([1, 4]))
assert_equal(9, virtcol([1, '$']))
assert_equal(0, virtcol([10, '$']))
bw!

View File

@ -755,6 +755,8 @@ static char *(features[]) =
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
3154,
/**/
3153,
/**/