From 0a47e0970a0e5d99aa7089169e0bcca0401decce Mon Sep 17 00:00:00 2001
From: Bram Moolenaar <Bram@vim.org>
Date: Wed, 8 Jul 2020 18:30:06 +0200
Subject: [PATCH] patch 8.2.1157: Vim9: dict.name is not recognized as an
 expression

Problem:    Vim9: dict.name is not recognized as an expression.
Solution:   Recognize ".name". (closes #6418)
---
 src/ex_docmd.c                |  4 +++-
 src/testdir/test_vim9_cmd.vim | 17 +++++++++++++++++
 src/version.c                 |  2 ++
 3 files changed, 22 insertions(+), 1 deletion(-)

diff --git a/src/ex_docmd.c b/src/ex_docmd.c
index 59778eb981..0573897b7c 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 14af261713..801404d9c6 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 e362e27057..a54d33bcbf 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,
 /**/
-- 
GitLab