patch 8.2.2785: Vim9: cannot redirect to local variable
Problem: Vim9: cannot redirect to local variable.
Solution: Compile :redir when redirecting to a variable.
diff --git a/src/testdir/test_vim9_cmd.vim b/src/testdir/test_vim9_cmd.vim
index 15c9a59..be33f74 100644
--- a/src/testdir/test_vim9_cmd.vim
+++ b/src/testdir/test_vim9_cmd.vim
@@ -1194,5 +1194,23 @@
bwipe!
enddef
+def Test_redir_to_var()
+ var result: string
+ redir => result
+ echo 'something'
+ redir END
+ assert_equal("\nsomething", result)
+
+ redir =>> result
+ echo 'more'
+ redir END
+ assert_equal("\nsomething\nmore", result)
+
+ var lines =<< trim END
+ redir => notexist
+ END
+ CheckDefFailure(lines, 'E1089:')
+enddef
+
" vim: ts=8 sw=2 sts=2 expandtab tw=80 fdm=marker
diff --git a/src/testdir/test_vim9_disassemble.vim b/src/testdir/test_vim9_disassemble.vim
index 8a96bf2..bf88d93 100644
--- a/src/testdir/test_vim9_disassemble.vim
+++ b/src/testdir/test_vim9_disassemble.vim
@@ -140,6 +140,33 @@
res)
enddef
+def s:RedirVar()
+ var result: string
+ redir =>> result
+ echo "text"
+ redir END
+enddef
+
+def Test_disassemble_redir_var()
+ var res = execute('disass s:RedirVar')
+ assert_match('<SNR>\d*_RedirVar.*' ..
+ ' var result: string\_s*' ..
+ '\d PUSHS "\[NULL\]"\_s*' ..
+ '\d STORE $0\_s*' ..
+ ' redir =>> result\_s*' ..
+ '\d REDIR\_s*' ..
+ ' echo "text"\_s*' ..
+ '\d PUSHS "text"\_s*' ..
+ '\d ECHO 1\_s*' ..
+ ' redir END\_s*' ..
+ '\d LOAD $0\_s*' ..
+ '\d REDIR END\_s*' ..
+ '\d CONCAT\_s*' ..
+ '\d STORE $0\_s*' ..
+ '\d RETURN 0',
+ res)
+enddef
+
def s:YankRange()
norm! m[jjm]
:'[,']yank