aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJan Edmund Lazo <jan.lazo@mail.utoronto.ca>2020-08-07 21:58:54 -0400
committerJan Edmund Lazo <jan.lazo@mail.utoronto.ca>2020-08-14 18:20:29 -0400
commitbc2c75cbd7860b1f1a0246fc9b11b0d68132a786 (patch)
treefdc38b715969e65a5c782825dfc06b60518a79e7
parentafa5b04d00856377f6ddd201ff972c74d559ade4 (diff)
downloadrneovim-bc2c75cbd7860b1f1a0246fc9b11b0d68132a786.tar.gz
rneovim-bc2c75cbd7860b1f1a0246fc9b11b0d68132a786.tar.bz2
rneovim-bc2c75cbd7860b1f1a0246fc9b11b0d68132a786.zip
vim-patch:8.2.1379: curly braces expression ending in " }" does not work
Problem: Curly braces expression ending in " }" does not work. Solution: Skip over white space when checking for "}". (closes vim/vim#6634) https://github.com/vim/vim/commit/ae95a3946b012d4e68bcb20b28f691f6d3b9caaf
-rw-r--r--src/nvim/eval.c2
-rw-r--r--src/nvim/testdir/test_eval_stuff.vim24
2 files changed, 25 insertions, 1 deletions
diff --git a/src/nvim/eval.c b/src/nvim/eval.c
index 3ab50878a8..b37fd85659 100644
--- a/src/nvim/eval.c
+++ b/src/nvim/eval.c
@@ -5365,7 +5365,7 @@ static int dict_get_tv(char_u **arg, typval_T *rettv, int evaluate)
if (eval1(&start, &tv, false) == FAIL) { // recursive!
return FAIL;
}
- if (*start == '}') {
+ if (*skipwhite(start) == '}') {
return NOTDONE;
}
}
diff --git a/src/nvim/testdir/test_eval_stuff.vim b/src/nvim/testdir/test_eval_stuff.vim
index 4b54a0d39f..061364fb73 100644
--- a/src/nvim/testdir/test_eval_stuff.vim
+++ b/src/nvim/testdir/test_eval_stuff.vim
@@ -108,3 +108,27 @@ func Test_skip_after_throw()
catch /something/
endtry
endfunc
+
+func Test_curly_assignment()
+ let s:svar = 'svar'
+ let g:gvar = 'gvar'
+ let lname = 'gvar'
+ let gname = 'gvar'
+ let {'s:'.lname} = {'g:'.gname}
+ call assert_equal('gvar', s:gvar)
+ let s:gvar = ''
+ let { 's:'.lname } = { 'g:'.gname }
+ call assert_equal('gvar', s:gvar)
+ let s:gvar = ''
+ let { 's:' . lname } = { 'g:' . gname }
+ call assert_equal('gvar', s:gvar)
+ let s:gvar = ''
+ let { 's:' .. lname } = { 'g:' .. gname }
+ call assert_equal('gvar', s:gvar)
+
+ unlet s:svar
+ unlet s:gvar
+ unlet g:gvar
+endfunc
+
+" vim: shiftwidth=2 sts=2 expandtab