From: Bram Moolenaar Date: Mon, 29 Nov 2021 13:44:55 +0000 (+0000) Subject: patch 8.2.3695: confusing error for missing key X-Git-Tag: v8.2.3695 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=5c1ec439f0a69e9aa7ece9bbb7d916f48f58be1e;p=vim patch 8.2.3695: confusing error for missing key Problem: Confusing error for missing key. Solution: Use the actualy key for the error. (closes #9241) --- diff --git a/src/eval.c b/src/eval.c index 0e8b6a677..bebe2f0ad 100644 --- 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); + item = dict_find(rettv->vval.v_dict, key, keylen); - if (item == NULL && verbose) - semsg(_(e_dictkey), key); 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 index 2eda9a880..0b024a0f6 100644 --- a/src/testdir/test_listdict.vim +++ b/src/testdir/test_listdict.vim @@ -454,6 +454,25 @@ func Test_dict_func_remove() END 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, []) diff --git a/src/version.c b/src/version.c index 623afb2de..e4c85892f 100644 --- a/src/version.c +++ b/src/version.c @@ -757,6 +757,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ +/**/ + 3695, /**/ 3694, /**/