]> granicus.if.org Git - vim/commitdiff
updated for version 7.2.402 v7.2.402
authorBram Moolenaar <Bram@vim.org>
Wed, 17 Mar 2010 18:53:49 +0000 (19:53 +0100)
committerBram Moolenaar <Bram@vim.org>
Wed, 17 Mar 2010 18:53:49 +0000 (19:53 +0100)
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)

src/eval.c
src/version.c

index f9babb3fc5ec311d6de3ce6505af4ab50166a39f..ad127b5bbbf1c0bc0de7a1754c006c3f54adafa9 100644 (file)
@@ -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 */
index 64e2a6067c5a64dc076f62f2626dc9d6e965e508..c625dffa90c9b478b1cfd9131a8bd30a6553d485 100644 (file)
@@ -681,6 +681,8 @@ static char *(features[]) =
 
 static int included_patches[] =
 {   /* Add new patch number below this line */
+/**/
+    402,
 /**/
     401,
 /**/