aboutsummaryrefslogtreecommitdiff
path: root/src/nvim/eval.c
diff options
context:
space:
mode:
authorzeertzjq <zeertzjq@outlook.com>2022-10-28 11:53:22 +0800
committerzeertzjq <zeertzjq@outlook.com>2022-11-06 10:01:50 +0800
commit7683199a9bf5d84745a10222feddc43343410068 (patch)
tree8b4ecc694ec268415ee53c3f7a334a55b6bda731 /src/nvim/eval.c
parentdc17df31908ac0e0c092760d84f035d3bfc55aae (diff)
downloadrneovim-7683199a9bf5d84745a10222feddc43343410068.tar.gz
rneovim-7683199a9bf5d84745a10222feddc43343410068.tar.bz2
rneovim-7683199a9bf5d84745a10222feddc43343410068.zip
vim-patch:8.2.2918: builtin function can be shadowed by global variable
Problem: Builtin function can be shadowed by global variable. Solution: Check for builtin function before variable. (Yasuhiro Matsumoto, closes vim/vim#8302) https://github.com/vim/vim/commit/3d9c4eefe656ee8bf58c0496a48bd56bac180056 Cherry-pick Test_gettext() from patch 8.2.2886.
Diffstat (limited to 'src/nvim/eval.c')
-rw-r--r--src/nvim/eval.c7
1 files changed, 7 insertions, 0 deletions
diff --git a/src/nvim/eval.c b/src/nvim/eval.c
index 465d76de69..5b5b4d259c 100644
--- a/src/nvim/eval.c
+++ b/src/nvim/eval.c
@@ -1760,6 +1760,13 @@ void set_var_lval(lval_T *lp, char *endp, typval_T *rettv, int copy, const bool
semsg(_(e_dictkey), lp->ll_newkey);
return;
}
+ if ((lp->ll_tv->vval.v_dict == &globvardict
+ // || lp->ll_tv->vval.v_dict == &SCRIPT_ITEM(current_sctx.sc_sid)->sn_vars->sv_dict
+ )
+ && (rettv->v_type == VAR_FUNC || rettv->v_type == VAR_PARTIAL)
+ && var_wrong_func_name(lp->ll_newkey, true)) {
+ return;
+ }
// Need to add an item to the Dictionary.
di = tv_dict_item_alloc((const char *)lp->ll_newkey);