diff --git a/src/ex_docmd.c b/src/ex_docmd.c
index 59778eb981ab92d9b199fcd74087b98af305a933..0573897b7c7f03f0d63defd770b97b8bec9641ca 100644
--- a/src/ex_docmd.c
+++ b/src/ex_docmd.c
@@ -3229,13 +3229,15 @@ find_ex_command(
 	// "varname[]" is an expression.
 	// "g:varname" is an expression.
 	// "varname->expr" is an expression.
+	// "varname.expr" is an expression.
 	// "(..." is an expression.
 	// "{..." is an dict expression.
 	if (*p == '('
 		|| *p == '{'
 		|| (*p == '[' && p > eap->cmd)
 		|| p[1] == ':'
-		|| (*p == '-' && p[1] == '>'))
+		|| (*p == '-' && p[1] == '>')
+		|| (*p == '.' && ASCII_ISALPHA(p[1])))
 	{
 	    eap->cmdidx = CMD_eval;
 	    return eap->cmd;
diff --git a/src/testdir/test_vim9_cmd.vim b/src/testdir/test_vim9_cmd.vim
index 14af261713242800dd97715a85377a49ddf15a30..801404d9c6f81bf1333c9aa7eec6f94da53c2ac2 100644
--- a/src/testdir/test_vim9_cmd.vim
+++ b/src/testdir/test_vim9_cmd.vim
@@ -208,6 +208,23 @@ def Test_method_call_linebreak()
   CheckScriptSuccess(lines)
 enddef
 
+def Test_dict_member()
+   let test: dict<list<number>> = {'data': [3, 1, 2]}
+   test.data->sort()
+   assert_equal(#{data: [1, 2, 3]}, test)
+   test.data
+      ->reverse()
+   assert_equal(#{data: [3, 2, 1]}, test)
+
+  let lines =<< trim END
+      vim9script
+      let test: dict<list<number>> = {'data': [3, 1, 2]}
+      test.data->sort()
+      assert_equal(#{data: [1, 2, 3]}, test)
+  END
+  CheckScriptSuccess(lines)
+enddef
+
 def Test_bar_after_command()
   def RedrawAndEcho()
     let x = 'did redraw'
diff --git a/src/version.c b/src/version.c
index e362e270572e68b13c138200f907d47b09aebd50..a54d33bcbfa9383b9270a0c0debb614b4755548f 100644
--- a/src/version.c
+++ b/src/version.c
@@ -754,6 +754,8 @@ static char *(features[]) =
 
 static int included_patches[] =
 {   /* Add new patch number below this line */
+/**/
+    1157,
 /**/
     1156,
 /**/