# HG changeset patch # User Bram Moolenaar # Date 1638193504 -3600 # Node ID 8afd7aa25ab623027ba0203cc644d75479cec4c8 # Parent 4ada663d2db6086b4e9dd2dd839d7b015128fed0 patch 8.2.3695: confusing error for missing key Commit: https://github.com/vim/vim/commit/5c1ec439f0a69e9aa7ece9bbb7d916f48f58be1e Author: Bram Moolenaar Date: Mon Nov 29 13:44:55 2021 +0000 patch 8.2.3695: confusing error for missing key Problem: Confusing error for missing key. Solution: Use the actualy key for the error. (closes https://github.com/vim/vim/issues/9241) diff --git a/src/eval.c b/src/eval.c --- a/src/eval.c +++ b/src/eval.c @@ -4287,12 +4287,18 @@ eval_index_inner( return FAIL; } - item = dict_find(rettv->vval.v_dict, key, (int)keylen); - - if (item == NULL && verbose) - semsg(_(e_dictkey), key); + item = dict_find(rettv->vval.v_dict, key, keylen); + if (item == NULL) + { + if (verbose) + { + if (keylen > 0) + key[keylen] = NUL; + semsg(_(e_dictkey), key); + } return FAIL; + } copy_tv(&item->di_tv, &tmp); clear_tv(rettv); diff --git a/src/testdir/test_listdict.vim b/src/testdir/test_listdict.vim --- a/src/testdir/test_listdict.vim +++ b/src/testdir/test_listdict.vim @@ -455,6 +455,25 @@ func Test_dict_func_remove() call CheckLegacyAndVim9Failure(lines, 'E716:') let lines =<< trim END + let d = {'a-b': 55} + echo d.a-b + END + call CheckScriptFailure(lines, 'E716: Key not present in Dictionary: "a"') + + let lines =<< trim END + vim9script + var d = {'a-b': 55} + echo d.a-b + END + call CheckScriptFailure(lines, 'E716: Key not present in Dictionary: "a"') + + let lines =<< trim END + var d = {'a-b': 55} + echo d.a-b + END + call CheckDefFailure(lines, 'E1004: White space required before and after ''-''') + + let lines =<< trim END let d = {1: 'a', 3: 'c'} call remove(d, []) END diff --git a/src/version.c b/src/version.c --- a/src/version.c +++ b/src/version.c @@ -758,6 +758,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ /**/ + 3695, +/**/ 3694, /**/ 3693,