patch 8.2.4313: Vim9: cannot change type of list after making a slice

Problem:    Vim9: cannot change type of list after making a slice.
Solution:   Adjust the declared member type. (closes #9696)
diff --git a/src/testdir/test_vim9_builtin.vim b/src/testdir/test_vim9_builtin.vim
index ee32b39..3ad6e0e 100644
--- a/src/testdir/test_vim9_builtin.vim
+++ b/src/testdir/test_vim9_builtin.vim
@@ -3626,6 +3626,7 @@
 
   var lds: list<dict<string>> = [{key: 'value'}]
   assert_equal(['val'], lds->slice(0, 1)->map((_, v) => 'val'))
+  assert_equal(['val'], lds[ : ]->map((_, v) => 'val'))
 
   assert_equal(0z1122334455, slice(0z001122334455, 1))
   assert_equal(0z112233, slice(0z001122334455, 1, 4))
diff --git a/src/version.c b/src/version.c
index 825f12d..7dbefa4 100644
--- a/src/version.c
+++ b/src/version.c
@@ -747,6 +747,8 @@
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    4313,
+/**/
     4312,
 /**/
     4311,
diff --git a/src/vim9expr.c b/src/vim9expr.c
index 146e136..4028037 100644
--- a/src/vim9expr.c
+++ b/src/vim9expr.c
@@ -182,6 +182,9 @@
 		     vartype == VAR_LIST ?  ISN_LISTSLICE : ISN_ANYSLICE,
 							    2) == FAIL)
 		return FAIL;
+	    // a copy is made so the member type is no longer declared
+	    if (typep->type_decl->tt_type == VAR_LIST)
+		typep->type_decl = &t_list_any;
 	}
 	else
 	{