Mercurial > vim
diff src/testdir/test_vim9_assign.vim @ 28560:060fc3b69697 v8.2.4804
patch 8.2.4804: expression in heredoc doesn't work for compiled function
Commit: https://github.com/vim/vim/commit/1fc6ea9bf3548b578676331f5eac1f7e0611c268
Author: Yegappan Lakshmanan <yegappan@yahoo.com>
Date: Thu Apr 21 23:30:15 2022 +0100
patch 8.2.4804: expression in heredoc doesn't work for compiled function
Problem: Expression in heredoc doesn't work for compiled function.
Solution: Implement compiling the heredoc expressions. (Yegappan Lakshmanan,
closes #10232)
author | Bram Moolenaar <Bram@vim.org> |
---|---|
date | Fri, 22 Apr 2022 00:45:04 +0200 |
parents | 769599ee9f06 |
children | 723c7d940cba |
line wrap: on
line diff
--- a/src/testdir/test_vim9_assign.vim +++ b/src/testdir/test_vim9_assign.vim @@ -1821,10 +1821,31 @@ def Test_assign_lambda() enddef def Test_heredoc() - var lines =<< trim END # comment - text + # simple heredoc + var lines =<< trim END + var text =<< trim TEXT # comment + abc + TEXT + assert_equal(['abc'], text) END - assert_equal(['text'], lines) + v9.CheckDefAndScriptSuccess(lines) + + # empty heredoc + lines =<< trim END + var text =<< trim TEXT + TEXT + assert_equal([], text) + END + v9.CheckDefAndScriptSuccess(lines) + + # heredoc with a single empty line + lines =<< trim END + var text =<< trim TEXT + + TEXT + assert_equal([''], text) + END + v9.CheckDefAndScriptSuccess(lines) v9.CheckDefFailure(['var lines =<< trim END X', 'END'], 'E488:') v9.CheckDefFailure(['var lines =<< trim END " comment', 'END'], 'E488:') @@ -2642,51 +2663,68 @@ let g:someVar = 'X' " Test for heredoc with Vim expressions. " This messes up highlighting, keep it near the end. def Test_heredoc_expr() - var code =<< trim eval END - var a = `=5 + 10` - var b = `=min([10, 6])` + `=max([4, 6])` - END - assert_equal(['var a = 15', 'var b = 6 + 6'], code) - - code =<< eval trim END - var s = "`=$SOME_ENV_VAR`" - END - assert_equal(['var s = "somemore"'], code) - - code =<< eval END - var s = "`=$SOME_ENV_VAR`" -END - assert_equal([' var s = "somemore"'], code) - - code =<< eval trim END - let a = `abc` - let b = `=g:someVar` - let c = ` - END - assert_equal(['let a = `abc`', 'let b = X', 'let c = `'], code) - - var lines =<< trim LINES + var lines =<< trim CODE + var s = "local" + var a1 = "1" + var a2 = "2" + var a3 = "3" + var a4 = "" + var code =<< trim eval END + var a = `=5 + 10` + var b = `=min([10, 6])` + `=max([4, 6])` + var c = "`=s`" + var d = x`=a1`x`=a2`x`=a3`x`=a4` + END + assert_equal(['var a = 15', 'var b = 6 + 6', 'var c = "local"', 'var d = x1x2x3x'], code) + CODE + v9.CheckDefAndScriptSuccess(lines) + + lines =<< trim CODE + var code =<< eval trim END + var s = "`=$SOME_ENV_VAR`" + END + assert_equal(['var s = "somemore"'], code) + CODE + v9.CheckDefAndScriptSuccess(lines) + + lines =<< trim CODE + var code =<< eval END + var s = "`=$SOME_ENV_VAR`" + END + assert_equal([' var s = "somemore"'], code) + CODE + v9.CheckDefAndScriptSuccess(lines) + + lines =<< trim CODE + var code =<< eval trim END + let a = `abc` + let b = `=g:someVar` + let c = ` + END + assert_equal(['let a = `abc`', 'let b = X', 'let c = `'], code) + CODE + v9.CheckDefAndScriptSuccess(lines) + + lines =<< trim LINES var text =<< eval trim END let b = `= END LINES - v9.CheckDefAndScriptFailure(lines, 'E1083:') + v9.CheckDefAndScriptFailure(lines, ['E1143: Empty expression: ""', 'E1083: Missing backtick']) lines =<< trim LINES var text =<< eval trim END let b = `=abc END LINES - v9.CheckDefAndScriptFailure(lines, 'E1083:') + v9.CheckDefAndScriptFailure(lines, ['E1001: Variable not found: abc', 'E1083: Missing backtick']) lines =<< trim LINES var text =<< eval trim END let b = `=` END LINES - v9.CheckDefAndScriptFailure(lines, 'E15:') + v9.CheckDefAndScriptFailure(lines, ['E1015: Name expected: `', 'E15: Invalid expression: "`"']) enddef - - " vim: ts=8 sw=2 sts=2 expandtab tw=80 fdm=marker