diff --git a/src/testdir/test_vim9_cmd.vim b/src/testdir/test_vim9_cmd.vim
index 6e01d99..2d86b6b 100644
--- a/src/testdir/test_vim9_cmd.vim
+++ b/src/testdir/test_vim9_cmd.vim
@@ -1558,6 +1558,23 @@
     redir END
   END
   CheckDefFailure(lines, 'E1141:')
+
+  lines =<< trim END
+      var text: string
+      redir => text
+        echo 'hello'
+        redir > Xfile
+      redir END
+  END
+  CheckDefFailure(lines, 'E1185:')
+
+  lines =<< trim END
+      var text: number
+      redir => text
+        echo 'hello'
+      redir END
+  END
+  CheckDefFailure(lines, 'E1012:')
 enddef
 
 def Test_echo_void()
diff --git a/src/testdir/test_vim9_script.vim b/src/testdir/test_vim9_script.vim
index c9ceccf..af80935 100644
--- a/src/testdir/test_vim9_script.vim
+++ b/src/testdir/test_vim9_script.vim
@@ -611,15 +611,49 @@
   # no requirement for spaces before |
   try|echo 0|catch|endtry
 
+  # return in try with finally
+  def ReturnInTry(): number
+    var ret = 4
+    try
+      return ret
+    catch /this/
+      return -1
+    catch /that/
+      return -1
+    finally
+      # changing ret has no effect
+      ret = 7
+    endtry
+    return -2
+  enddef
+  assert_equal(4, ReturnInTry())
+
+  # return in catch with finally
+  def ReturnInCatch(): number
+    var ret = 5
+    try
+      throw 'getout'
+      return -1
+    catch /getout/
+      # ret is evaluated here
+      return ret
+    finally
+      # changing ret later has no effect
+      ret = -3
+    endtry
+    return -2
+  enddef
+  assert_equal(5, ReturnInCatch())
+
   # return in finally after empty catch
   def ReturnInFinally(): number
     try
     finally
-      return 4
+      return 6
     endtry
-    return 2
+    return -1
   enddef
-  assert_equal(4, ReturnInFinally())
+  assert_equal(6, ReturnInFinally())
 
   var lines =<< trim END
       vim9script
diff --git a/src/version.c b/src/version.c
index b3121d1..a7f372d 100644
--- a/src/version.c
+++ b/src/version.c
@@ -750,6 +750,8 @@
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    3858,
+/**/
     3857,
 /**/
     3856,
diff --git a/src/vim9compile.c b/src/vim9compile.c
index 8ef1faf..2b27f51 100644
--- a/src/vim9compile.c
+++ b/src/vim9compile.c
@@ -8651,7 +8651,7 @@
 }
 
 /*
- * compile "try"
+ * Compile "try".
  * Creates a new scope for the try-endtry, pointing to the first catch and
  * finally.
  * Creates another scope for the "try" block itself.
@@ -8722,7 +8722,7 @@
 }
 
 /*
- * compile "catch {expr}"
+ * Compile "catch {expr}".
  */
     static char_u *
 compile_catch(char_u *arg, cctx_T *cctx UNUSED)
@@ -9477,8 +9477,8 @@
     static char_u *
 compile_redir(char_u *line, exarg_T *eap, cctx_T *cctx)
 {
-    char_u *arg = eap->arg;
-    lhs_T	*lhs = &cctx->ctx_redir_lhs;
+    char_u  *arg = eap->arg;
+    lhs_T   *lhs = &cctx->ctx_redir_lhs;
 
     if (lhs->lhs_name != NULL)
     {
@@ -9534,6 +9534,9 @@
 	if (compile_assign_lhs(arg, lhs, CMD_redir,
 						FALSE, FALSE, 1, cctx) == FAIL)
 	    return NULL;
+	if (need_type(&t_string, lhs->lhs_member_type,
+					    -1, 0, cctx, FALSE, FALSE) == FAIL)
+	    return NULL;
 	generate_instr(cctx, ISN_REDIRSTART);
 	lhs->lhs_append = append;
 	if (lhs->lhs_has_index)
