From dea5ab0fc5bb51105078d5349f987496b1aa8d6f Mon Sep 17 00:00:00 2001 From: Bram Moolenaar Date: Wed, 23 Feb 2022 22:12:02 +0000 Subject: patch 8.2.4460: Vim9: wrong error for defining dict function Problem: Vim9: wrong error for defining dict function. Solution: Explicitly check for trying to define a dict function. (closes 9827) --- src/userfunc.c | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) (limited to 'src/userfunc.c') diff --git a/src/userfunc.c b/src/userfunc.c index 3a66d2732..ed2fb8668 100644 --- a/src/userfunc.c +++ b/src/userfunc.c @@ -4268,10 +4268,21 @@ define_function(exarg_T *eap, char_u *name_arg, garray_T *lines_to_free) } else { - if (vim9script && p[0] == 's' && p[1] == ':') + if (vim9script) { - semsg(_(e_cannot_use_s_colon_in_vim9_script_str), p); - return NULL; + if (p[0] == 's' && p[1] == ':') + { + semsg(_(e_cannot_use_s_colon_in_vim9_script_str), p); + return NULL; + } + p = to_name_end(p, TRUE); + if (*skipwhite(p) == '.' && vim_strchr(p, '(') != NULL) + { + semsg(_(e_cannot_define_dict_func_in_vim9_script_str), + eap->arg); + return NULL; + } + p = eap->arg; } name = save_function_name(&p, &is_global, eap->skip, -- cgit v1.2.1