aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJan Edmund Lazo <jan.lazo@mail.utoronto.ca>2020-10-07 00:40:33 -0400
committerJan Edmund Lazo <jan.lazo@mail.utoronto.ca>2020-10-07 00:44:53 -0400
commitd109a331446a998671bf54655df99238e2f1b093 (patch)
tree9001c8df02ff46c4497ee1740924582926d6cc77
parent7ca5dc2519018c33def6bd6361d26099df04e7e2 (diff)
downloadrneovim-d109a331446a998671bf54655df99238e2f1b093.tar.gz
rneovim-d109a331446a998671bf54655df99238e2f1b093.tar.bz2
rneovim-d109a331446a998671bf54655df99238e2f1b093.zip
vim-patch:8.1.1686: "*" of "*{" is recognized as multipy operator
Problem: "*" of "*{" is recognized as multipy operator. (Yasuhiro Matsumoto) Solution: Check for the "{". https://github.com/vim/vim/commit/2898ebb44cee62a70a11b44a97bdad8cc00157b1
-rw-r--r--src/nvim/eval.c3
-rw-r--r--src/nvim/testdir/test_listdict.vim1
2 files changed, 3 insertions, 1 deletions
diff --git a/src/nvim/eval.c b/src/nvim/eval.c
index 70549b950d..16d51d3a81 100644
--- a/src/nvim/eval.c
+++ b/src/nvim/eval.c
@@ -3802,8 +3802,9 @@ static int eval6(char_u **arg, typval_T *rettv, int evaluate, int want_string)
*/
for (;; ) {
op = **arg;
- if (op != '*' && op != '/' && op != '%')
+ if ((op != '*' || (*arg)[1] == '{') && op != '/' && op != '%') {
break;
+ }
if (evaluate) {
if (rettv->v_type == VAR_FLOAT) {
diff --git a/src/nvim/testdir/test_listdict.vim b/src/nvim/testdir/test_listdict.vim
index 7b11885cc0..95f1d264ea 100644
--- a/src/nvim/testdir/test_listdict.vim
+++ b/src/nvim/testdir/test_listdict.vim
@@ -282,6 +282,7 @@ endfunc
func Test_dict_literal_keys()
call assert_equal({'one': 1, 'two2': 2, '3three': 3, '44': 4}, *{one: 1, two2: 2, 3three: 3, 44: 4},)
+ call assert_equal('2 3', trim(execute('echo 2 *{blue: 3}.blue')))
endfunc
" Nasty: deepcopy() dict that refers to itself (fails when noref used)