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)

3d9c4eefe6

Cherry-pick Test_gettext() from patch 8.2.2886.
This commit is contained in:
zeertzjq
2022-10-28 11:53:22 +08:00
parent dc17df3190
commit 7683199a9b
2 changed files with 20 additions and 0 deletions

View File

@@ -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);