hashtab_T *ht;
char_u *p;
+ ht = find_var_ht(name, &varname);
+ if (ht == NULL || *varname == NUL)
+ {
+ EMSG2(_(e_illvar), name);
+ return;
+ }
+ v = find_var_in_ht(ht, varname, TRUE);
+
if (tv->v_type == VAR_FUNC)
{
if (!(vim_strchr((char_u *)"wbs", name[0]) != NULL && name[1] == ':')
EMSG2(_("E704: Funcref variable name must start with a capital: %s"), name);
return;
}
- if (function_exists(name))
+ /* Don't allow hiding a function. When "v" is not NULL we migth be
+ * assigning another function to the same var, the type is checked
+ * below. */
+ if (v == NULL && function_exists(name))
{
EMSG2(_("E705: Variable name conflicts with existing function: %s"),
name);
}
}
- ht = find_var_ht(name, &varname);
- if (ht == NULL || *varname == NUL)
- {
- EMSG2(_(e_illvar), name);
- return;
- }
-
- v = find_var_in_ht(ht, varname, TRUE);
if (v != NULL)
{
/* existing variable, need to clear the value */