# HG changeset patch # User Bram Moolenaar # Date 1571262303 -7200 # Node ID 9ea364ccf2162dbd3661ad1833587b115ee14bca # Parent e4e6e0bfc526dd753b8fea40b2e5815764a57c64 patch 8.1.2168: heredoc assignment not skipped in if block Commit: https://github.com/vim/vim/commit/b1ba9abcb385b0a5355788a7eefef78ec68d2f65 Author: Bram Moolenaar Date: Wed Oct 16 23:34:42 2019 +0200 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 https://github.com/vim/vim/issues/5063) diff --git a/src/evalvars.c b/src/evalvars.c --- a/src/evalvars.c +++ b/src/evalvars.c @@ -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); } } diff --git a/src/testdir/test_let.vim b/src/testdir/test_let.vim --- a/src/testdir/test_let.vim +++ b/src/testdir/test_let.vim @@ -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 diff --git a/src/version.c b/src/version.c --- a/src/version.c +++ b/src/version.c @@ -754,6 +754,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ /**/ + 2168, +/**/ 2167, /**/ 2166,