diff --git a/src/eval.c b/src/eval.c
index e0f0816..555cd38 100644
--- a/src/eval.c
+++ b/src/eval.c
@@ -959,7 +959,7 @@
 		&& lp->ll_tv == &v->di_tv
 		&& ht != NULL && ht == get_script_local_ht())
 	{
-	    svar_T  *sv = find_typval_in_script(lp->ll_tv);
+	    svar_T  *sv = find_typval_in_script(lp->ll_tv, TRUE);
 
 	    // Vim9 script local variable: get the type
 	    if (sv != NULL)
diff --git a/src/evalvars.c b/src/evalvars.c
index 1b3d1f6..a171c82 100644
--- a/src/evalvars.c
+++ b/src/evalvars.c
@@ -2565,6 +2565,7 @@
     typval_T	*tv = NULL;
     int		found = FALSE;
     dictitem_T	*v;
+    hashtab_T	*ht = NULL;
     int		cc;
 
     // truncate the name, so that we can use strcmp()
@@ -2575,7 +2576,7 @@
     if ((tv = lookup_debug_var(name)) == NULL)
     {
 	// Check for user-defined variables.
-	v = find_var(name, NULL, flags & EVAL_VAR_NOAUTOLOAD);
+	v = find_var(name, &ht, flags & EVAL_VAR_NOAUTOLOAD);
 	if (v != NULL)
 	{
 	    tv = &v->di_tv;
@@ -2655,18 +2656,35 @@
 	}
 	else if (rettv != NULL)
 	{
+	    type_T	*type = NULL;
+
+	    if (ht != NULL && ht == get_script_local_ht())
+	    {
+		svar_T *sv = find_typval_in_script(tv, FALSE);
+
+		// TODO: check imported variable
+		if (sv != NULL)
+		    type = sv->sv_type;
+	    }
+
 	    // If a list or dict variable wasn't initialized, do it now.
 	    if (tv->v_type == VAR_DICT && tv->vval.v_dict == NULL)
 	    {
 		tv->vval.v_dict = dict_alloc();
 		if (tv->vval.v_dict != NULL)
+		{
 		    ++tv->vval.v_dict->dv_refcount;
+		    tv->vval.v_dict->dv_type = alloc_type(type);
+		}
 	    }
 	    else if (tv->v_type == VAR_LIST && tv->vval.v_list == NULL)
 	    {
 		tv->vval.v_list = list_alloc();
 		if (tv->vval.v_list != NULL)
+		{
 		    ++tv->vval.v_list->lv_refcount;
+		    tv->vval.v_list->lv_type = alloc_type(type);
+		}
 	    }
 	    else if (tv->v_type == VAR_BLOB && tv->vval.v_blob == NULL)
 	    {
diff --git a/src/proto/vim9script.pro b/src/proto/vim9script.pro
index 41bf128..14f0800 100644
--- a/src/proto/vim9script.pro
+++ b/src/proto/vim9script.pro
@@ -16,7 +16,7 @@
 void update_vim9_script_var(int create, dictitem_T *di, int flags, typval_T *tv, type_T **type, int do_member);
 void hide_script_var(scriptitem_T *si, int idx, int func_defined);
 void free_all_script_vars(scriptitem_T *si);
-svar_T *find_typval_in_script(typval_T *dest);
+svar_T *find_typval_in_script(typval_T *dest, int give_error);
 int check_script_var_type(typval_T *dest, typval_T *value, char_u *name, where_T where);
 int check_reserved_name(char_u *name);
 /* vim: set ft=c : */
diff --git a/src/testdir/test_vim9_builtin.vim b/src/testdir/test_vim9_builtin.vim
index 8a6af57..dcf6007 100644
--- a/src/testdir/test_vim9_builtin.vim
+++ b/src/testdir/test_vim9_builtin.vim
@@ -111,6 +111,13 @@
       l->add(123)
   END
   CheckScriptFailure(lines, 'E1012: Type mismatch; expected string but got number', 3)
+
+  lines =<< trim END
+      vim9script
+      var l: list<string>
+      l->add(123)
+  END
+  CheckScriptFailure(lines, 'E1012: Type mismatch; expected string but got number', 3)
 enddef
 
 def Test_add_blob()
diff --git a/src/userfunc.c b/src/userfunc.c
index 4234681..4ab7cc1 100644
--- a/src/userfunc.c
+++ b/src/userfunc.c
@@ -1512,7 +1512,7 @@
 	{
 	    if (type != NULL && ht == get_script_local_ht())
 	    {
-		svar_T  *sv = find_typval_in_script(&v->di_tv);
+		svar_T  *sv = find_typval_in_script(&v->di_tv, TRUE);
 
 		if (sv != NULL)
 		    *type = sv->sv_type;
diff --git a/src/version.c b/src/version.c
index 7bca3a0..c523be2 100644
--- a/src/version.c
+++ b/src/version.c
@@ -756,6 +756,8 @@
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    3128,
+/**/
     3127,
 /**/
     3126,
diff --git a/src/vim9script.c b/src/vim9script.c
index 9dc67a7..8acb7c3 100644
--- a/src/vim9script.c
+++ b/src/vim9script.c
@@ -806,7 +806,7 @@
     }
     else
     {
-	sv = find_typval_in_script(&di->di_tv);
+	sv = find_typval_in_script(&di->di_tv, TRUE);
     }
     if (sv != NULL)
     {
@@ -922,10 +922,11 @@
 
 /*
  * Find the script-local variable that links to "dest".
- * Returns NULL if not found.
+ * Returns NULL if not found and when "give_error" is TRUE this is considered
+ * an internal error.
  */
     svar_T *
-find_typval_in_script(typval_T *dest)
+find_typval_in_script(typval_T *dest, int give_error)
 {
     scriptitem_T    *si = SCRIPT_ITEM(current_sctx.sc_sid);
     int		    idx;
@@ -944,7 +945,8 @@
 	if (sv->sv_name != NULL && sv->sv_tv == dest)
 	    return sv;
     }
-    iemsg("find_typval_in_script(): not found");
+    if (give_error)
+	iemsg("find_typval_in_script(): not found");
     return NULL;
 }
 
@@ -959,7 +961,7 @@
 	char_u	    *name,
 	where_T	    where)
 {
-    svar_T  *sv = find_typval_in_script(dest);
+    svar_T  *sv = find_typval_in_script(dest, TRUE);
     int	    ret;
 
     if (sv != NULL)
