diff options
author | Bram Moolenaar <bram@zimbu.org> | 2010-03-17 19:53:49 +0100 |
---|---|---|
committer | Bram Moolenaar <bram@zimbu.org> | 2010-03-17 19:53:49 +0100 |
commit | 133e04e658ec0ee2454b1a4234b19b3ef5027c0e (patch) | |
tree | 84eeaecd3d3c41c0178b7feb59125878e6158137 | |
parent | ad83e6d5f00a060618b5b2635449347a09119cc6 (diff) | |
download | vim-133e04e658ec0ee2454b1a4234b19b3ef5027c0e.tar.gz |
Problem: This gives a #705 error: let X = function('haslocaldir')
let X = function('getcwd')
Solution: Don't give E705 when the name is found in the hashtab. (Sergey
Khorev)
-rw-r--r-- | src/eval.c | 21 | ||||
-rw-r--r-- | src/version.c | 2 |
2 files changed, 14 insertions, 9 deletions
@@ -19103,6 +19103,14 @@ set_var(name, tv, copy) 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] == ':') @@ -19112,7 +19120,10 @@ set_var(name, tv, copy) 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); @@ -19120,14 +19131,6 @@ set_var(name, tv, copy) } } - 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 */ diff --git a/src/version.c b/src/version.c index 64e2a606..c625dffa 100644 --- a/src/version.c +++ b/src/version.c @@ -682,6 +682,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ /**/ + 402, +/**/ 401, /**/ 400, |