Mercurial > vim
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; }