diff --git a/src/dict.c b/src/dict.c
index 922da47..876eeea 100644
--- a/src/dict.c
+++ b/src/dict.c
@@ -345,12 +345,28 @@
 }
 
 /*
+ * Check for adding a function to g: or s:.
+ * If the name is wrong give an error message and return TRUE.
+ */
+    int
+dict_wrong_func_name(dict_T *d, typval_T *tv, char_u *name)
+{
+    return (d == get_globvar_dict()
+	    || (SCRIPT_ID_VALID(current_sctx.sc_sid)
+		  && d == &SCRIPT_ITEM(current_sctx.sc_sid)->sn_vars->sv_dict))
+	    && (tv->v_type == VAR_FUNC || tv->v_type == VAR_PARTIAL)
+	    && var_wrong_func_name(name, TRUE);
+}
+
+/*
  * Add item "item" to Dictionary "d".
  * Returns FAIL when out of memory and when key already exists.
  */
     int
 dict_add(dict_T *d, dictitem_T *item)
 {
+    if (dict_wrong_func_name(d, &item->di_tv, item->di_key))
+	return FAIL;
     return hash_add(&d->dv_hashtab, item->di_key);
 }
 
@@ -1109,6 +1125,8 @@
 		if (value_check_lock(di1->di_tv.v_lock, arg_errmsg, TRUE)
 			|| var_check_ro(di1->di_flags, arg_errmsg, TRUE))
 		    break;
+		if (dict_wrong_func_name(d1, &HI2DI(hi2)->di_tv, hi2->hi_key))
+		    break;
 		clear_tv(&di1->di_tv);
 		copy_tv(&HI2DI(hi2)->di_tv, &di1->di_tv);
 	    }
diff --git a/src/eval.c b/src/eval.c
index 9fb3b4e..7a05d35 100644
--- a/src/eval.c
+++ b/src/eval.c
@@ -1462,12 +1462,8 @@
 		semsg(_(e_dictkey), lp->ll_newkey);
 		return;
 	    }
-	    if ((lp->ll_tv->vval.v_dict == get_globvar_dict()
-		    || 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))
+	    if (dict_wrong_func_name(lp->ll_tv->vval.v_dict, rettv,
+								lp->ll_newkey))
 		return;
 
 	    // Need to add an item to the Dictionary.
diff --git a/src/proto/dict.pro b/src/proto/dict.pro
index dbfdcdc..7789d4c 100644
--- a/src/proto/dict.pro
+++ b/src/proto/dict.pro
@@ -13,6 +13,7 @@
 void dictitem_remove(dict_T *dict, dictitem_T *item);
 void dictitem_free(dictitem_T *item);
 dict_T *dict_copy(dict_T *orig, int deep, int copyID);
+int dict_wrong_func_name(dict_T *d, typval_T *tv, char_u *name);
 int dict_add(dict_T *d, dictitem_T *item);
 int dict_add_number(dict_T *d, char *key, varnumber_T nr);
 int dict_add_bool(dict_T *d, char *key, varnumber_T nr);
diff --git a/src/testdir/test_functions.vim b/src/testdir/test_functions.vim
index e1aff61..f945e90 100644
--- a/src/testdir/test_functions.vim
+++ b/src/testdir/test_functions.vim
@@ -2686,6 +2686,11 @@
   call assert_fails('let g:.trim = {x -> " " .. x}', 'E704:')
   call assert_fails('let s:["trim"] = {x -> " " .. x}', 'E704:')
   call assert_fails('let s:.trim = {x -> " " .. x}', 'E704:')
+
+  call assert_fails('call extend(g:, #{foo: { -> "foo" }})', 'E704:')
+  let g:bar = 123
+  call extend(g:, #{bar: { -> "foo" }}, "keep")
+  call assert_fails('call extend(g:, #{bar: { -> "foo" }}, "force")', 'E704:')
 endfunc
 
 
diff --git a/src/version.c b/src/version.c
index a9a7b29..1c01adb 100644
--- a/src/version.c
+++ b/src/version.c
@@ -751,6 +751,8 @@
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    2920,
+/**/
     2919,
 /**/
     2918,
