patch 9.1.1017: Vim9: Patch 9.1.1013 causes a few problems Commit: https://github.com/vim/vim/commit/9904cbca4132f7376246a1a31305eb53e9530023 Author: Yegappan Lakshmanan <yegap...@yahoo.com> Date: Wed Jan 15 18:25:19 2025 +0100
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 <yegap...@yahoo.com> Signed-off-by: Christian Brabandt <c...@256bit.org> diff --git a/src/evalfunc.c b/src/evalfunc.c index 63142523c..71e3448ae 100644 --- a/src/evalfunc.c +++ b/src/evalfunc.c @@ -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) { diff --git a/src/testdir/test_functions.vim b/src/testdir/test_functions.vim index 8b0af9101..9fc954c08 100644 --- a/src/testdir/test_functions.vim +++ b/src/testdir/test_functions.vim @@ -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())) diff --git a/src/testdir/test_vim9_func.vim b/src/testdir/test_vim9_func.vim index 38832e99d..4e31f34d6 100644 --- a/src/testdir/test_vim9_func.vim +++ b/src/testdir/test_vim9_func.vim @@ -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) diff --git a/src/version.c b/src/version.c index 13ffc5d4e..39c0aa64e 100644 --- a/src/version.c +++ b/src/version.c @@ -704,6 +704,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ +/**/ + 1017, /**/ 1016, /**/ -- -- You received this message from the "vim_dev" maillist. Do not top-post! Type your reply below the text you are replying to. For more information, visit http://www.vim.org/maillist.php --- You received this message because you are subscribed to the Google Groups "vim_dev" group. To unsubscribe from this group and stop receiving emails from it, send an email to vim_dev+unsubscr...@googlegroups.com. To view this discussion visit https://groups.google.com/d/msgid/vim_dev/E1tY7DU-00E8Fh-Mc%40256bit.org.