patch 8.2.2267: Vim9: cannot use unlet for a dict member

Problem:    Vim9: cannot use unlet for a dict member.
Solution:   Pass GLV_NO_DECL to get_lval(). (closes #7585)
diff --git a/src/evalvars.c b/src/evalvars.c
index 346031e..73b9f3d 100644
--- a/src/evalvars.c
+++ b/src/evalvars.c
@@ -1566,7 +1566,7 @@
 	{
 	    // 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 83c26a4..d884a4f 100644
--- a/src/testdir/test_vim9_assign.vim
+++ b/src/testdir/test_vim9_assign.vim
@@ -984,19 +984,39 @@
 enddef
 
 def Test_assign_dict()
-  var d: dict<string> = {}
-  d['key'] = 'value'
-  assert_equal('value', d['key'])
+  var lines =<< trim END
+      var d: dict<string> = {}
+      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<number> = {}
-  for i in range(3)
-    nrd[i] = i
-  endfor
-  assert_equal({0: 0, 1: 1, 2: 2}, nrd)
+      var nrd: dict<number> = {}
+      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<string> = {}
+      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<number> = {a: '', b: true}"], 'E1012: Type mismatch; expected dict<number> but got dict<any>', 1)
   CheckDefFailure(["var d: dict<dict<number>> = {x: {a: '', b: true}}"], 'E1012: Type mismatch; expected dict<dict<number>> but got dict<dict<any>>', 1)
diff --git a/src/version.c b/src/version.c
index 493dece..1c5c6b3 100644
--- a/src/version.c
+++ b/src/version.c
@@ -751,6 +751,8 @@
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    2267,
+/**/
     2266,
 /**/
     2265,