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 #10306)
diff --git a/src/testdir/test_let.vim b/src/testdir/test_let.vim
index 2606fa2..32f91f6 100644
--- a/src/testdir/test_let.vim
+++ b/src/testdir/test_let.vim
@@ -509,20 +509,24 @@
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`
@@ -530,12 +534,14 @@
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
@@ -562,6 +568,13 @@
LINES
call v9.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