diff options
author | Bram Moolenaar <Bram@vim.org> | 2020-11-19 19:01:43 +0100 |
---|---|---|
committer | Bram Moolenaar <Bram@vim.org> | 2020-11-19 19:01:43 +0100 |
commit | 67d1c68f095eb6cbb6355b04972e384d23065c2c (patch) | |
tree | eae38c014c4e57795ebd7cd3d34f8b00614d5649 | |
parent | c6ca9f3a29bfd6f5269749036f79f63ce6289692 (diff) | |
download | vim-git-8.2.2017.tar.gz |
patch 8.2.2017: missing part of the dict changev8.2.2017
Problem: Missing part of the dict change.
Solution: Also change the script level dict.
-rw-r--r-- | src/dict.c | 31 | ||||
-rw-r--r-- | src/version.c | 2 |
2 files changed, 29 insertions, 4 deletions
diff --git a/src/dict.c b/src/dict.c index b3ef35a80..3b965d0ac 100644 --- a/src/dict.c +++ b/src/dict.c @@ -111,6 +111,7 @@ dict_free_contents(dict_T *d) /* * Clear hashtab "ht" and dict items it contains. + * If "ht" is not freed then you should call hash_init() next! */ void hashtab_free_contents(hashtab_T *ht) @@ -850,10 +851,32 @@ eval_dict(char_u **arg, typval_T *rettv, evalarg_T *evalarg, int literal) *arg = skipwhite_and_linebreak(*arg + 1, evalarg); while (**arg != '}' && **arg != NUL) { - if ((literal - ? get_literal_key(arg, &tvkey) - : eval1(arg, &tvkey, evalarg)) == FAIL) // recursive! - goto failret; + char_u *p = to_name_end(*arg, FALSE); + + if (literal || (vim9script && *p == ':')) + { + if (get_literal_key(arg, &tvkey) == FAIL) + goto failret; + } + else + { + int has_bracket = vim9script && **arg == '['; + + if (has_bracket) + *arg = skipwhite(*arg + 1); + if (eval1(arg, &tvkey, evalarg) == FAIL) // recursive! + goto failret; + if (has_bracket) + { + *arg = skipwhite(*arg); + if (**arg != ']') + { + emsg(_(e_missing_matching_bracket_after_dict_key)); + return FAIL; + } + ++*arg; + } + } // the colon should come right after the key, but this wasn't checked // previously, so only require it in Vim9 script. diff --git a/src/version.c b/src/version.c index 01cf3c935..03f8a3f70 100644 --- a/src/version.c +++ b/src/version.c @@ -751,6 +751,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ /**/ + 2017, +/**/ 2016, /**/ 2015, |