mirror of
https://github.com/neovim/neovim.git
synced 2025-02-25 18:55:25 -06:00
vim-patch:8.2.4840: heredoc expression evaluated even when skipping
Problem: Heredoc expression evaluated even when skipping.
Solution: Don't evaluate when "skip" is set. (closes vim/vim#10306)
05c7f5d3d0
Co-authored-by: Bram Moolenaar <Bram@vim.org>
This commit is contained in:
parent
3c16e75ae1
commit
2cf8f01e7d
@ -227,7 +227,7 @@ static list_T *heredoc_get(exarg_T *eap, char *cmd)
|
||||
}
|
||||
|
||||
char *str = theline + ti;
|
||||
if (evalstr) {
|
||||
if (evalstr && !eap->skip) {
|
||||
str = eval_all_expr_in_str(str);
|
||||
if (str == NULL) {
|
||||
// expression evaluation failed
|
||||
|
@ -507,20 +507,24 @@ func Test_let_heredoc_eval()
|
||||
let c = "abc`=str`d"
|
||||
END
|
||||
call assert_equal(['let a = 15', 'let b = 6 + 6', '', 'let c = "abcd"'], code)
|
||||
|
||||
let $TESTVAR = "Hello"
|
||||
let code =<< eval trim END
|
||||
let s = "`=$TESTVAR`"
|
||||
END
|
||||
call assert_equal(['let s = "Hello"'], code)
|
||||
|
||||
let code =<< eval END
|
||||
let s = "`=$TESTVAR`"
|
||||
END
|
||||
call assert_equal([' let s = "Hello"'], code)
|
||||
|
||||
let a = 10
|
||||
let data =<< eval END
|
||||
`=a`
|
||||
END
|
||||
call assert_equal(['10'], data)
|
||||
|
||||
let x = 'X'
|
||||
let code =<< eval trim END
|
||||
let a = `abc`
|
||||
@ -528,12 +532,14 @@ END
|
||||
let c = `
|
||||
END
|
||||
call assert_equal(['let a = `abc`', 'let b = X', 'let c = `'], code)
|
||||
|
||||
let code = 'xxx'
|
||||
let code =<< eval trim END
|
||||
let n = `=5 +
|
||||
6`
|
||||
END
|
||||
call assert_equal('xxx', code)
|
||||
|
||||
let code =<< eval trim END
|
||||
let n = `=min([1, 2]` + `=max([3, 4])`
|
||||
END
|
||||
@ -560,6 +566,13 @@ END
|
||||
LINES
|
||||
call CheckScriptFailure(lines, 'E15:')
|
||||
|
||||
" skipped heredoc
|
||||
if 0
|
||||
let msg =<< trim eval END
|
||||
n is: `=n`
|
||||
END
|
||||
endif
|
||||
|
||||
" Test for sourcing a script containing a heredoc with invalid expression.
|
||||
" Variable assignment should fail, if expression evaluation fails
|
||||
new
|
||||
|
Loading…
Reference in New Issue
Block a user