diff options
author | Bram Moolenaar <Bram@vim.org> | 2020-07-29 20:00:38 +0200 |
---|---|---|
committer | Bram Moolenaar <Bram@vim.org> | 2020-07-29 20:00:38 +0200 |
commit | 1040956292a9f2c3d02fc08febd5acf349c85590 (patch) | |
tree | 9478dbc3a208ce7689737cd8ba36aac07c86689e /src | |
parent | 7b7f78f51dc5a2c307330af0d4e53faced34726f (diff) |
patch 8.2.1322: Vim9: method on double quoted string doesn't workv8.2.1322
Problem: Vim9: method on double quoted string doesn't work.
Solution: Recognize double quoted string. (closes #6562)
Diffstat (limited to 'src')
-rw-r--r-- | src/ex_docmd.c | 4 | ||||
-rw-r--r-- | src/testdir/test_vim9_expr.vim | 5 | ||||
-rw-r--r-- | src/testdir/test_vim9_func.vim | 9 | ||||
-rw-r--r-- | src/version.c | 2 |
4 files changed, 17 insertions, 3 deletions
diff --git a/src/ex_docmd.c b/src/ex_docmd.c index 536850edc9..ad1693b516 100644 --- a/src/ex_docmd.c +++ b/src/ex_docmd.c @@ -3277,7 +3277,7 @@ find_ex_command( char_u *pskip = (*eap->cmd == '&' || *eap->cmd == '$' || *eap->cmd == '@') ? eap->cmd + 1 : eap->cmd; - if (vim_strchr((char_u *)"{('[", *p) != NULL + if (vim_strchr((char_u *)"{('[\"", *p) != NULL || ((p = to_name_const_end(pskip)) > eap->cmd && *p != NUL)) { int oplen; @@ -3293,6 +3293,8 @@ find_ex_command( *eap->cmd == '{' // "'string'->func()" is an expression. || *eap->cmd == '\'' + // '"string"->func()' is an expression. + || *eap->cmd == '"' // "g:varname" is an expression. || eap->cmd[1] == ':' ) diff --git a/src/testdir/test_vim9_expr.vim b/src/testdir/test_vim9_expr.vim index 5b46c32f96..e29ef5cf0e 100644 --- a/src/testdir/test_vim9_expr.vim +++ b/src/testdir/test_vim9_expr.vim @@ -1638,8 +1638,9 @@ enddef def Test_expr7_method_call() new setline(1, ['first', 'last']) - eval 'second'->append(1) - assert_equal(['first', 'second', 'last'], getline(1, '$')) + 'second'->append(1) + "third"->append(2) + assert_equal(['first', 'second', 'third', 'last'], getline(1, '$')) bwipe! let bufnr = bufnr() diff --git a/src/testdir/test_vim9_func.vim b/src/testdir/test_vim9_func.vim index c05e98e704..2546f1369f 100644 --- a/src/testdir/test_vim9_func.vim +++ b/src/testdir/test_vim9_func.vim @@ -502,8 +502,11 @@ def Test_vim9script_call() assert_equal('some', var) # line starting with single quote is not a mark + # line starting with double quote can be a method call 'asdfasdf'->MyFunc() assert_equal('asdfasdf', var) + "xyz"->MyFunc() + assert_equal('xyz', var) def UseString() 'xyork'->MyFunc() @@ -511,6 +514,12 @@ def Test_vim9script_call() UseString() assert_equal('xyork', var) + def UseString2() + "knife"->MyFunc() + enddef + UseString2() + assert_equal('knife', var) + # prepending a colon makes it a mark new setline(1, ['aaa', 'bbb', 'ccc']) diff --git a/src/version.c b/src/version.c index db2e9b42b1..bb1c4ab413 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 */ /**/ + 1322, +/**/ 1321, /**/ 1320, |