diff src/vim9execute.c @ 20140:39a18a0df429 v8.2.0625

patch 8.2.0625: Vim9: confusing error when calling unknown function Commit: https://github.com/vim/vim/commit/1df8b3fb04ce8732a0be680273c95eb4e9f5e85d Author: Bram Moolenaar <Bram@vim.org> Date: Thu Apr 23 18:13:23 2020 +0200 patch 8.2.0625: Vim9: confusing error when calling unknown function Problem: Vim9: confusing error when calling unknown function. Solution: Give error while compiling.
author Bram Moolenaar <Bram@vim.org>
date Thu, 23 Apr 2020 18:15:04 +0200
parents 058b41f85bcb
children fe8d0a4344df
line wrap: on
line diff
--- a/src/vim9execute.c
+++ b/src/vim9execute.c
@@ -460,13 +460,20 @@ call_eval_func(char_u *name, int argcoun
     if (call_by_name(name, argcount, ectx, iptr) == FAIL
 					  && called_emsg == called_emsg_before)
     {
-	// "name" may be a variable that is a funcref or partial
-	//    if find variable
-	//      call_partial()
-	//    else
-	//      semsg(_(e_unknownfunc), name);
-	emsg("call_eval_func(partial) not implemented yet");
-	return FAIL;
+	dictitem_T	*v;
+
+	v = find_var(name, NULL, FALSE);
+	if (v == NULL)
+	{
+	    semsg(_(e_unknownfunc), name);
+	    return FAIL;
+	}
+	if (v->di_tv.v_type != VAR_PARTIAL && v->di_tv.v_type != VAR_FUNC)
+	{
+	    semsg(_(e_unknownfunc), name);
+	    return FAIL;
+	}
+	return call_partial(&v->di_tv, argcount, ectx);
     }
     return OK;
 }