diff --git a/src/eval.c b/src/eval.c index 0e8b6a6776..bebe2f0ad5 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 2eda9a8801..0b024a0f6f 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 623afb2def..e4c85892f2 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, /**/