diff --git a/src/eval.c b/src/eval.c
index 956f05c..cf2c771 100644
--- a/src/eval.c
+++ b/src/eval.c
@@ -7813,7 +7813,7 @@
     /* Don't allow hiding a function.  When "v" is not NULL we might be
      * assigning another function to the same var, the type is checked
      * below. */
-    if (new_var && function_exists(name))
+    if (new_var && function_exists(name, FALSE))
     {
 	EMSG2(_("E705: Variable name conflicts with existing function: %s"),
 								    name);
diff --git a/src/evalfunc.c b/src/evalfunc.c
index 9905d0b..13864ea 100644
--- a/src/evalfunc.c
+++ b/src/evalfunc.c
@@ -2845,7 +2845,7 @@
     }
     else if (*p == '*')			/* internal or user defined function */
     {
-	n = function_exists(p + 1);
+	n = function_exists(p + 1, FALSE);
     }
     else if (*p == ':')
     {
@@ -3577,7 +3577,7 @@
 	EMSG2(_(e_invarg2), s);
     /* Don't check an autoload name for existence here. */
     else if (use_string && vim_strchr(s, AUTOLOAD_CHAR) == NULL
-						       && !function_exists(s))
+						&& !function_exists(s, TRUE))
 	EMSG2(_("E700: Unknown function: %s"), s);
     else
     {
diff --git a/src/proto/userfunc.pro b/src/proto/userfunc.pro
index 42c5883..bd39604 100644
--- a/src/proto/userfunc.pro
+++ b/src/proto/userfunc.pro
@@ -9,7 +9,7 @@
 void ex_function(exarg_T *eap);
 int eval_fname_script(char_u *p);
 int translated_function_exists(char_u *name);
-int function_exists(char_u *name);
+int function_exists(char_u *name, int no_deref);
 char_u *get_expanded_name(char_u *name, int check);
 void func_dump_profile(FILE *fd);
 void prof_child_enter(proftime_T *tm);
diff --git a/src/testdir/test_expr.vim b/src/testdir/test_expr.vim
index 8db4d8e..d8abc27 100644
--- a/src/testdir/test_expr.vim
+++ b/src/testdir/test_expr.vim
@@ -172,3 +172,10 @@
   call assert_fails("call substitute('xxx', '.', {m -> string(extend(m, ['x']))}, '')", 'E742:')
   call assert_fails("call substitute('xxx', '.', {m -> string(remove(m, 1))}, '')", 'E742:')
 endfunc
+
+func Test_function_with_funcref()
+  let s:f = function('type')
+  let s:fref = function(s:f)
+  call assert_equal(v:t_string, s:fref('x'))
+  call assert_fails("call function('s:f')", 'E700:')
+endfunc
diff --git a/src/userfunc.c b/src/userfunc.c
index 0c6c613..3c6401f 100644
--- a/src/userfunc.c
+++ b/src/userfunc.c
@@ -295,7 +295,7 @@
     if (ret == FAIL || **arg != '>')
 	goto errret;
 
-    /* Set up dictionaries for checking local variables and arguments. */
+    /* Set up a flag for checking local variables and arguments. */
     if (evaluate)
 	eval_lavars_used = &eval_lavars;
 
@@ -1504,6 +1504,7 @@
  * TFN_INT:	    internal function name OK
  * TFN_QUIET:	    be quiet
  * TFN_NO_AUTOLOAD: do not use script autoloading
+ * TFN_NO_DEREF:    do not dereference a Funcref
  * Advances "pp" to just after the function name (if no error).
  */
     static char_u *
@@ -1618,7 +1619,7 @@
 	if (name == lv.ll_exp_name)
 	    name = NULL;
     }
-    else
+    else if (!(flags & TFN_NO_DEREF))
     {
 	len = (int)(end - *pp);
 	name = deref_func_name(*pp, &len, partial, flags & TFN_NO_AUTOLOAD);
@@ -1690,7 +1691,7 @@
 								       start);
 	goto theend;
     }
-    if (!skip && !(flags & TFN_QUIET))
+    if (!skip && !(flags & TFN_QUIET) && !(flags & TFN_NO_DEREF))
     {
 	char_u *cp = vim_strchr(lv.ll_name, ':');
 
@@ -2381,16 +2382,20 @@
 
 /*
  * Return TRUE if a function "name" exists.
+ * If "no_defef" is TRUE, do not dereference a Funcref.
  */
     int
-function_exists(char_u *name)
+function_exists(char_u *name, int no_deref)
 {
     char_u  *nm = name;
     char_u  *p;
     int	    n = FALSE;
+    int	    flag;
 
-    p = trans_function_name(&nm, FALSE, TFN_INT|TFN_QUIET|TFN_NO_AUTOLOAD,
-			    NULL, NULL);
+    flag = TFN_INT | TFN_QUIET | TFN_NO_AUTOLOAD;
+    if (no_deref)
+	flag |= TFN_NO_DEREF;
+    p = trans_function_name(&nm, FALSE, flag, NULL, NULL);
     nm = skipwhite(nm);
 
     /* Only accept "funcname", "funcname ", "funcname (..." and
diff --git a/src/version.c b/src/version.c
index 5808cbc..8ef6dec 100644
--- a/src/version.c
+++ b/src/version.c
@@ -764,6 +764,8 @@
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    2134,
+/**/
     2133,
 /**/
     2132,
diff --git a/src/vim.h b/src/vim.h
index 7560982..34a8650 100644
--- a/src/vim.h
+++ b/src/vim.h
@@ -2458,6 +2458,7 @@
 #define TFN_INT		1	/* internal function name OK */
 #define TFN_QUIET	2	/* no error messages */
 #define TFN_NO_AUTOLOAD	4	/* do not use script autoloading */
+#define TFN_NO_DEREF	8	/* do not dereference a Funcref */
 
 /* Values for get_lval() flags argument: */
 #define GLV_QUIET	TFN_QUIET	/* no error messages */
