forked from aniani/vim
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:
committed by
Bram Moolenaar
parent
7b7a118e74
commit
841e498c5d
@@ -431,9 +431,10 @@ arg_item_of_prev(type_T *type, argcontext_T *context)
|
|||||||
static int
|
static int
|
||||||
arg_str_or_nr_or_list(type_T *type, argcontext_T *context)
|
arg_str_or_nr_or_list(type_T *type, argcontext_T *context)
|
||||||
{
|
{
|
||||||
if (type->tt_type == VAR_STRING
|
if (type->tt_type == VAR_ANY
|
||||||
|| type->tt_type == VAR_NUMBER
|
|| type->tt_type == VAR_STRING
|
||||||
|| type->tt_type == VAR_LIST)
|
|| type->tt_type == VAR_NUMBER
|
||||||
|
|| type->tt_type == VAR_LIST)
|
||||||
return OK;
|
return OK;
|
||||||
arg_type_mismatch(&t_string, type, context->arg_idx + 1);
|
arg_type_mismatch(&t_string, type, context->arg_idx + 1);
|
||||||
return FAIL;
|
return FAIL;
|
||||||
|
@@ -1523,6 +1523,12 @@ enddef
|
|||||||
def Test_popup_atcursor()
|
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": 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')
|
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
|
enddef
|
||||||
|
|
||||||
def Test_popup_beval()
|
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')
|
CheckDefAndScriptFailure2(['popup_beval("a", [1, 2])'], 'E1013: Argument 2: type mismatch, expected dict<any> but got list<number>', 'E715: Dictionary required')
|
||||||
enddef
|
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()
|
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": 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')
|
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'])
|
setline(1, ['abcdefgh'])
|
||||||
cursor(1, 4)
|
cursor(1, 4)
|
||||||
assert_equal(4, virtcol('.'))
|
assert_equal(4, virtcol('.'))
|
||||||
|
assert_equal(4, virtcol([1, 4]))
|
||||||
assert_equal(9, virtcol([1, '$']))
|
assert_equal(9, virtcol([1, '$']))
|
||||||
assert_equal(0, virtcol([10, '$']))
|
assert_equal(0, virtcol([10, '$']))
|
||||||
bw!
|
bw!
|
||||||
|
@@ -755,6 +755,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 */
|
||||||
|
/**/
|
||||||
|
3154,
|
||||||
/**/
|
/**/
|
||||||
3153,
|
3153,
|
||||||
/**/
|
/**/
|
||||||
|
Reference in New Issue
Block a user