# HG changeset patch # User Bram Moolenaar # Date 1596284103 -7200 # Node ID b8b15e8cbf5faf719ea91b9e5f89fdcfc6abc34a # Parent 56e2dfbce89f0c6d05edc159f6bf79caffd65c5f patch 8.2.1337: Vim9: cannot use empty key in dict assignment Commit: https://github.com/vim/vim/commit/586268721dd5d6e50903a8a457f02e0dda901856 Author: Bram Moolenaar Date: Sat Aug 1 14:06:38 2020 +0200 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 https://github.com/vim/vim/issues/6591) diff --git a/src/testdir/test_vim9_script.vim b/src/testdir/test_vim9_script.vim --- 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'} @@ -784,13 +787,6 @@ def Test_try_catch() assert_equal(300, n) try - d[''] = 3 - catch /E713:/ - n = 311 - endtry - assert_equal(311, n) - - try unlet g:does_not_exist catch /E108:/ n = 322 diff --git a/src/version.c b/src/version.c --- 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 */ /**/ + 1337, +/**/ 1336, /**/ 1335, diff --git a/src/vim9execute.c b/src/vim9execute.c --- 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)