summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBram Moolenaar <Bram@vim.org>2020-07-08 18:30:06 +0200
committerBram Moolenaar <Bram@vim.org>2020-07-08 18:30:06 +0200
commit0a47e0970a0e5d99aa7089169e0bcca0401decce (patch)
tree4ee75e19d665e343043adbf9a09657c7e16ef4fb
parent002262f4dee452964190b0d022aa7443f602b288 (diff)
patch 8.2.1157: Vim9: dict.name is not recognized as an expressionv8.2.1157
Problem: Vim9: dict.name is not recognized as an expression. Solution: Recognize ".name". (closes #6418)
-rw-r--r--src/ex_docmd.c4
-rw-r--r--src/testdir/test_vim9_cmd.vim17
-rw-r--r--src/version.c2
3 files changed, 22 insertions, 1 deletions
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
@@ -755,6 +755,8 @@ static char *(features[]) =
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
+ 1157,
+/**/
1156,
/**/
1155,