diff --git a/src/evalvars.c b/src/evalvars.c
index d5c993d..d95118b 100644
--- a/src/evalvars.c
+++ b/src/evalvars.c
@@ -2788,11 +2788,11 @@
 }
 
 /*
- * Look for "name[len]" in script-local variables.
+ * Look for "name[len]" in script-local variables and functions.
  * Return OK when found, FAIL when not found.
  */
     int
-lookup_scriptvar(
+lookup_scriptitem(
 	char_u	*name,
 	size_t	len,
 	cctx_T	*dummy UNUSED)
@@ -2802,6 +2802,8 @@
     char_u	*p;
     int		res;
     hashitem_T	*hi;
+    int		is_global = FALSE;
+    char_u	*fname = name;
 
     if (ht == NULL)
 	return FAIL;
@@ -2824,9 +2826,24 @@
     // if not script-local, then perhaps imported
     if (res == FAIL && find_imported(p, 0, NULL) != NULL)
 	res = OK;
-
     if (p != buffer)
 	vim_free(p);
+
+    if (res != OK)
+    {
+	// Find a function, so that a following "->" works.  Skip "g:" before a
+	// function name.
+	// Do not check for an internal function, since it might also be a
+	// valid command, such as ":split" versuse "split()".
+	if (name[0] == 'g' && name[1] == ':')
+	{
+	    is_global = TRUE;
+	    fname = name + 2;
+	}
+	if (find_func(fname, is_global, NULL) != NULL)
+	    res = OK;
+    }
+
     return res;
 }
 
diff --git a/src/ex_docmd.c b/src/ex_docmd.c
index 77162ec..40e70c3 100644
--- a/src/ex_docmd.c
+++ b/src/ex_docmd.c
@@ -1829,7 +1829,7 @@
 	if (ea.cmd == cmd + 1 && *cmd == '$')
 	    // should be "$VAR = val"
 	    --ea.cmd;
-	p = find_ex_command(&ea, NULL, lookup_scriptvar, NULL);
+	p = find_ex_command(&ea, NULL, lookup_scriptitem, NULL);
 	if (ea.cmdidx == CMD_SIZE)
 	{
 	    char_u *ar = skip_range(ea.cmd, TRUE, NULL);
diff --git a/src/proto/evalvars.pro b/src/proto/evalvars.pro
index cf4db0b..bd2c687 100644
--- a/src/proto/evalvars.pro
+++ b/src/proto/evalvars.pro
@@ -61,7 +61,7 @@
 dictitem_T *find_var(char_u *name, hashtab_T **htp, int no_autoload);
 dictitem_T *find_var_in_ht(hashtab_T *ht, int htname, char_u *varname, int no_autoload);
 hashtab_T *get_script_local_ht(void);
-int lookup_scriptvar(char_u *name, size_t len, cctx_T *dummy);
+int lookup_scriptitem(char_u *name, size_t len, cctx_T *dummy);
 hashtab_T *find_var_ht(char_u *name, char_u **varname);
 char_u *get_var_value(char_u *name);
 void new_script_vars(scid_T id);
diff --git a/src/testdir/test_vim9_cmd.vim b/src/testdir/test_vim9_cmd.vim
index 9a0460b..f638c84 100644
--- a/src/testdir/test_vim9_cmd.vim
+++ b/src/testdir/test_vim9_cmd.vim
@@ -371,6 +371,24 @@
   MethodAfterLinebreak('foobar')
   assert_equal('foobar', getline(1))
   bwipe!
+
+  lines =<< trim END
+      vim9script
+      def Foo(): string
+          return '# some text'
+      enddef
+
+      def Bar(F: func): string
+          return F()
+      enddef
+
+      Foo
+         ->Bar()
+         ->setline(1)
+  END
+  CheckScriptSuccess(lines)
+  assert_equal('# some text', getline(1))
+  bwipe!
 enddef
 
 def Test_method_call_whitespace()
diff --git a/src/version.c b/src/version.c
index eecbf20..c6913d6 100644
--- a/src/version.c
+++ b/src/version.c
@@ -751,6 +751,8 @@
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    2566,
+/**/
     2565,
 /**/
     2564,
diff --git a/src/vim9script.c b/src/vim9script.c
index 68d7f5e..5ce7c3b 100644
--- a/src/vim9script.c
+++ b/src/vim9script.c
@@ -138,7 +138,7 @@
     }
 
     eap->cmd = eap->arg;
-    (void)find_ex_command(eap, NULL, lookup_scriptvar, NULL);
+    (void)find_ex_command(eap, NULL, lookup_scriptitem, NULL);
     switch (eap->cmdidx)
     {
 	case CMD_let:
