Problem: Vim9: redir in skipped block seen as assignment.
Solution: Check for valid assignment.
// "&opt = expr"
// "var = expr" where "var" is a variable name or we are skipping
// (variable declaration might have been skipped).
+ // Not "redir => var" (when skipping).
oplen = assignment_len(skipwhite(p), &heredoc);
if (oplen > 0)
{
|| *eap->cmd == '&'
|| *eap->cmd == '$'
|| *eap->cmd == '@'
- || eap->skip
+ || (eap->skip && IS_WHITE_OR_NUL(
+ *(skipwhite(p) + oplen)))
|| lookup(eap->cmd, p - eap->cmd, TRUE, cctx) == OK)
{
eap->cmdidx = CMD_var;
v9.CheckDefAndScriptSuccess(lines)
enddef
+def Test_redir_is_not_assign()
+ if false
+ redir => res
+ echo var_job
+ redir END
+ endif
+enddef
+
def Test_extend_list()
# using uninitialized list assigns empty list
var lines =<< trim END
static int included_patches[] =
{ /* Add new patch number below this line */
+/**/
+ 4886,
/**/
4885,
/**/