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)
diff --git a/src/ex_docmd.c b/src/ex_docmd.c
index 59778eb..0573897 100644
--- a/src/ex_docmd.c
+++ b/src/ex_docmd.c
@@ -3229,13 +3229,15 @@
// "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 14af261..801404d 100644
--- a/src/testdir/test_vim9_cmd.vim
+++ b/src/testdir/test_vim9_cmd.vim
@@ -208,6 +208,23 @@
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 e362e27..a54d33b 100644
--- a/src/version.c
+++ b/src/version.c
@@ -755,6 +755,8 @@
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
+ 1157,
+/**/
1156,
/**/
1155,