mirror of
https://github.com/vim/vim
synced 2025-07-16 01:01:58 +00:00
patch 9.1.1017: Vim9: Patch 9.1.1013 causes a few problems
Problem: Vim9: Patch 9.1.1013 causes a few problems Solution: Translate the function name only when it is a string (Yegappan Lakshmanan) fixes: #16453 closes: #16450 Signed-off-by: Yegappan Lakshmanan <yegappan@yahoo.com> Signed-off-by: Christian Brabandt <cb@256bit.org>
This commit is contained in:
committed by
Christian Brabandt
parent
1aefe1de0b
commit
9904cbca41
@ -3769,14 +3769,17 @@ f_call(typval_T *argvars, typval_T *rettv)
|
||||
if (func == NULL || *func == NUL)
|
||||
return; // type error, empty name or null function
|
||||
|
||||
char_u *p = func;
|
||||
tofree = trans_function_name(&p, NULL, FALSE, TFN_INT|TFN_QUIET);
|
||||
if (tofree == NULL)
|
||||
if (argvars[0].v_type == VAR_STRING)
|
||||
{
|
||||
emsg_funcname(e_unknown_function_str, func);
|
||||
return;
|
||||
char_u *p = func;
|
||||
tofree = trans_function_name(&p, NULL, FALSE, TFN_INT|TFN_QUIET);
|
||||
if (tofree == NULL)
|
||||
{
|
||||
emsg_funcname(e_unknown_function_str, func);
|
||||
return;
|
||||
}
|
||||
func = tofree;
|
||||
}
|
||||
func = tofree;
|
||||
|
||||
if (argvars[2].v_type != VAR_UNKNOWN)
|
||||
{
|
||||
|
@ -2990,6 +2990,8 @@ endfunc
|
||||
func Test_call()
|
||||
call assert_equal(3, call('len', [123]))
|
||||
call assert_equal(3, 'len'->call([123]))
|
||||
call assert_equal(4, call({ x -> len(x) }, ['xxxx']))
|
||||
call assert_equal(2, call(function('len'), ['xx']))
|
||||
call assert_fails("call call('len', 123)", 'E1211:')
|
||||
call assert_equal(0, call('', []))
|
||||
call assert_equal(0, call('len', test_null_list()))
|
||||
|
@ -4729,6 +4729,9 @@ def Test_call_modified_import_func()
|
||||
export def Run()
|
||||
done = 0
|
||||
Setup()
|
||||
call(Setup, [])
|
||||
call("Setup", [])
|
||||
call(() => Setup(), [])
|
||||
done += 1
|
||||
enddef
|
||||
END
|
||||
@ -4749,7 +4752,7 @@ def Test_call_modified_import_func()
|
||||
|
||||
imp.Run()
|
||||
|
||||
assert_equal(1, setup)
|
||||
assert_equal(4, setup)
|
||||
assert_equal(1, imp.done)
|
||||
END
|
||||
v9.CheckScriptSuccess(lines)
|
||||
|
@ -704,6 +704,8 @@ static char *(features[]) =
|
||||
|
||||
static int included_patches[] =
|
||||
{ /* Add new patch number below this line */
|
||||
/**/
|
||||
1017,
|
||||
/**/
|
||||
1016,
|
||||
/**/
|
||||
|
Reference in New Issue
Block a user