patch 8.1.2168: heredoc assignment not skipped in if block

Problem:    Heredoc assignment not skipped in if block.
Solution:   Check if "skip" is set. (closes #5063)
This commit is contained in:
Bram Moolenaar
2019-10-16 23:34:42 +02:00
parent 2559a47823
commit b1ba9abcb3
3 changed files with 16 additions and 3 deletions

View File

@ -756,10 +756,13 @@ ex_let_const(exarg_T *eap, int is_const)
if (l != NULL)
{
rettv_list_set(&rettv, l);
op[0] = '=';
op[1] = NUL;
(void)ex_let_vars(eap->arg, &rettv, FALSE, semicolon, var_count,
if (!eap->skip)
{
op[0] = '=';
op[1] = NUL;
(void)ex_let_vars(eap->arg, &rettv, FALSE, semicolon, var_count,
is_const, op);
}
clear_tv(&rettv);
}
}

View File

@ -295,4 +295,12 @@ E
app
END
call assert_equal(['something', 'app'], var1)
let check = []
if 0
let check =<< trim END
from heredoc
END
endif
call assert_equal([], check)
endfunc

View File

@ -753,6 +753,8 @@ static char *(features[]) =
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
2168,
/**/
2167,
/**/