From 586268721dd5d6e50903a8a457f02e0dda901856 Mon Sep 17 00:00:00 2001 From: Bram Moolenaar Date: Sat, 1 Aug 2020 14:06:38 +0200 Subject: patch 8.2.1337: Vim9: cannot use empty key in dict assignment Problem: Vim9: cannot use empty key in dict assignment. Solution: Allow empty key. (closes #6591) --- src/testdir/test_vim9_script.vim | 12 ++++-------- src/version.c | 2 ++ src/vim9execute.c | 7 ++----- 3 files changed, 8 insertions(+), 13 deletions(-) diff --git a/src/testdir/test_vim9_script.vim b/src/testdir/test_vim9_script.vim index 405d4877a..ec63c6f11 100644 --- a/src/testdir/test_vim9_script.vim +++ b/src/testdir/test_vim9_script.vim @@ -244,7 +244,10 @@ def Test_assignment_dict() # overwrite dict3['key'] = 'another' - call CheckDefExecFailure(['let dd = {}', 'dd[""] = 6'], 'E713:') + # empty key can be used + let dd = {} + dd[""] = 6 + assert_equal({'': 6}, dd) # type becomes dict let somedict = rand() > 0 ? #{a: 1, b: 2} : #{a: 'a', b: 'b'} @@ -783,13 +786,6 @@ def Test_try_catch() endtry assert_equal(300, n) - try - d[''] = 3 - catch /E713:/ - n = 311 - endtry - assert_equal(311, n) - try unlet g:does_not_exist catch /E108:/ diff --git a/src/version.c b/src/version.c index bf22a76d9..661875a27 100644 --- a/src/version.c +++ b/src/version.c @@ -754,6 +754,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ +/**/ + 1337, /**/ 1336, /**/ diff --git a/src/vim9execute.c b/src/vim9execute.c index 9bfec3af1..de29988be 100644 --- a/src/vim9execute.c +++ b/src/vim9execute.c @@ -1422,11 +1422,8 @@ call_def_function( dict_T *dict = tv_dict->vval.v_dict; dictitem_T *di; - if (key == NULL || *key == NUL) - { - emsg(_(e_emptykey)); - goto on_error; - } + if (key == NULL) + key = (char_u *)""; tv = STACK_TV_BOT(-3); di = dict_find(dict, key, -1); if (di != NULL) -- cgit v1.2.1