diff --git a/src/eval.c b/src/eval.c
index 3e316bd..ebd2507 100644
--- a/src/eval.c
+++ b/src/eval.c
@@ -3671,7 +3671,7 @@
 
 /*
  * Evaluate "->method()".
- * "*arg" points to the '-'.
+ * "*arg" points to "method".
  * Returns FAIL or OK. "*arg" is advanced to after the ')'.
  */
     static int
@@ -3686,8 +3686,6 @@
     typval_T	base = *rettv;
     int		ret;
 
-    // Skip over the ->.
-    *arg += 2;
     rettv->v_type = VAR_UNKNOWN;
 
     if (**arg == '{')
@@ -3735,7 +3733,7 @@
 
 /*
  * Evaluate "->method()".
- * "*arg" points to the '-'.
+ * "*arg" points to "method".
  * Returns FAIL or OK. "*arg" is advanced to after the ')'.
  */
     static int
@@ -3753,8 +3751,6 @@
     int		evaluate = evalarg != NULL
 				      && (evalarg->eval_flags & EVAL_EVALUATE);
 
-    // Skip over the ->.
-    *arg += 2;
     rettv->v_type = VAR_UNKNOWN;
 
     name = *arg;
@@ -5765,10 +5761,10 @@
 	}
 	else if (p[0] == '-' && p[1] == '>')
 	{
-	    *arg = p;
+	    *arg = skipwhite(p + 2);
 	    if (ret == OK)
 	    {
-		if (((*arg)[2] == '{' && !in_vim9script()) || (*arg)[2] == '(')
+		if ((**arg == '{' && !in_vim9script()) || **arg == '(')
 		    // expr->{lambda}() or expr->(lambda)()
 		    ret = eval_lambda(arg, rettv, evalarg, verbose);
 		else
diff --git a/src/ex_docmd.c b/src/ex_docmd.c
index 9562e6b..b9ae13d 100644
--- a/src/ex_docmd.c
+++ b/src/ex_docmd.c
@@ -3313,8 +3313,9 @@
 	if (vim_strchr((char_u *)"{('[\"@", *p) != NULL
 	       || ((p = to_name_const_end(pskip)) > eap->cmd && *p != NUL))
 	{
-	    int oplen;
-	    int heredoc;
+	    int	    oplen;
+	    int	    heredoc;
+	    char_u  *swp = skipwhite(p);
 
 	    if (
 		// "(..." is an expression.
@@ -3332,7 +3333,7 @@
 			 || eap->cmd[1] == ':'
 			    )
 			    // "varname->func()" is an expression.
-			: (*p == '-' && p[1] == '>')))
+			: (*swp == '-' && swp[1] == '>')))
 	    {
 		if (*eap->cmd == '{' && ends_excmd(*skipwhite(eap->cmd + 1)))
 		{
diff --git a/src/testdir/test_vim9_cmd.vim b/src/testdir/test_vim9_cmd.vim
index 12b9bf1..735f488 100644
--- a/src/testdir/test_vim9_cmd.vim
+++ b/src/testdir/test_vim9_cmd.vim
@@ -319,6 +319,20 @@
   CheckScriptSuccess(lines)
 enddef
 
+def Test_method_call_whitespace()
+  var lines =<< trim END
+    new
+    var yank = 'text'
+    yank->setline(1)
+    yank  ->setline(2)
+    yank->  setline(3)
+    yank  ->  setline(4)
+    assert_equal(['text', 'text', 'text', 'text'], getline(1, 4))
+    bwipe!
+  END
+  CheckDefAndScriptSuccess(lines)
+enddef
+
 def Test_skipped_expr_linebreak()
   if 0
     var x = []
diff --git a/src/version.c b/src/version.c
index 7942e74..af1f7d2 100644
--- a/src/version.c
+++ b/src/version.c
@@ -751,6 +751,8 @@
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    2396,
+/**/
     2395,
 /**/
     2394,
