diff --git a/src/evalvars.c b/src/evalvars.c index 346031ec56..73b9f3d0fc 100644 --- a/src/evalvars.c +++ b/src/evalvars.c @@ -1566,7 +1566,7 @@ ex_unletlock( { // Parse the name and find the end. name_end = get_lval(arg, NULL, &lv, TRUE, eap->skip || error, - glv_flags, FNE_CHECK_START); + glv_flags | GLV_NO_DECL, FNE_CHECK_START); if (lv.ll_name == NULL) error = TRUE; // error but continue parsing if (name_end == NULL || (!VIM_ISWHITE(*name_end) diff --git a/src/testdir/test_vim9_assign.vim b/src/testdir/test_vim9_assign.vim index 83c26a4179..d884a4f7a8 100644 --- a/src/testdir/test_vim9_assign.vim +++ b/src/testdir/test_vim9_assign.vim @@ -984,19 +984,39 @@ def Test_assign_list() enddef def Test_assign_dict() - var d: dict = {} - d['key'] = 'value' - assert_equal('value', d['key']) + var lines =<< trim END + var d: dict = {} + d['key'] = 'value' + assert_equal('value', d['key']) - d[123] = 'qwerty' - assert_equal('qwerty', d[123]) - assert_equal('qwerty', d['123']) + d[123] = 'qwerty' + assert_equal('qwerty', d[123]) + assert_equal('qwerty', d['123']) - var nrd: dict = {} - for i in range(3) - nrd[i] = i - endfor - assert_equal({0: 0, 1: 1, 2: 2}, nrd) + var nrd: dict = {} + for i in range(3) + nrd[i] = i + endfor + assert_equal({0: 0, 1: 1, 2: 2}, nrd) + + d.somekey = 'someval' + assert_equal({key: 'value', '123': 'qwerty', somekey: 'someval'}, d) + # unlet d.somekey + # assert_equal({key: 'value', '123': 'qwerty'}, d) + END + CheckDefAndScriptSuccess(lines) + + # TODO: move to above once "unlet d.somekey" in :def is implemented + lines =<< trim END + vim9script + var d: dict = {} + d['key'] = 'value' + d.somekey = 'someval' + assert_equal({key: 'value', somekey: 'someval'}, d) + unlet d.somekey + assert_equal({key: 'value'}, d) + END + CheckScriptSuccess(lines) CheckDefFailure(["var d: dict = {a: '', b: true}"], 'E1012: Type mismatch; expected dict but got dict', 1) CheckDefFailure(["var d: dict> = {x: {a: '', b: true}}"], 'E1012: Type mismatch; expected dict> but got dict>', 1) diff --git a/src/version.c b/src/version.c index 493dece2b1..1c5c6b39fc 100644 --- a/src/version.c +++ b/src/version.c @@ -750,6 +750,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ +/**/ + 2267, /**/ 2266, /**/