Mercurial > vim
comparison src/testdir/test_vim9_assign.vim @ 32347:edea3992cb01 v9.0.1505
patch 9.0.1505: error when heredoc content looks like heredoc
Commit: https://github.com/vim/vim/commit/a93d9cdc74f70ca2c85781496ffae4ca738fcd88
Author: zeertzjq <zeertzjq@outlook.com>
Date: Tue May 2 16:25:47 2023 +0100
patch 9.0.1505: error when heredoc content looks like heredoc
Problem: Error when heredoc content looks like heredoc.
Solution: Handle curly expressions. (closes https://github.com/vim/vim/issues/12325)
author | Bram Moolenaar <Bram@vim.org> |
---|---|
date | Tue, 02 May 2023 17:30:05 +0200 |
parents | 7d505d77f6da |
children | 304341915488 |
comparison
equal
deleted
inserted
replaced
32346:0e2ba4c8b1c1 | 32347:edea3992cb01 |
---|---|
1846 enddef | 1846 enddef |
1847 | 1847 |
1848 def Test_heredoc() | 1848 def Test_heredoc() |
1849 # simple heredoc | 1849 # simple heredoc |
1850 var lines =<< trim END | 1850 var lines =<< trim END |
1851 var text =<< trim TEXT # comment | 1851 var text =<< trim TEXT # comment |
1852 abc | 1852 abc |
1853 TEXT | 1853 TEXT |
1854 assert_equal(['abc'], text) | 1854 assert_equal(['abc'], text) |
1855 END | 1855 END |
1856 v9.CheckDefAndScriptSuccess(lines) | 1856 v9.CheckDefAndScriptSuccess(lines) |
1857 | 1857 |
1858 # empty heredoc | 1858 # empty heredoc |
1859 lines =<< trim END | 1859 lines =<< trim END |
1860 var text =<< trim TEXT | 1860 var text =<< trim TEXT |
1861 TEXT | 1861 TEXT |
1862 assert_equal([], text) | 1862 assert_equal([], text) |
1863 END | 1863 END |
1864 v9.CheckDefAndScriptSuccess(lines) | 1864 v9.CheckDefAndScriptSuccess(lines) |
1865 | 1865 |
1866 # heredoc with a single empty line | 1866 # heredoc with a single empty line |
1867 lines =<< trim END | 1867 lines =<< trim END |
1868 var text =<< trim TEXT | 1868 var text =<< trim TEXT |
1869 | 1869 |
1870 TEXT | 1870 TEXT |
1871 assert_equal([''], text) | 1871 assert_equal([''], text) |
1872 END | 1872 END |
1873 v9.CheckDefAndScriptSuccess(lines) | 1873 v9.CheckDefAndScriptSuccess(lines) |
1874 | |
1875 # assign heredoc to variable with type | |
1876 lines =<< trim END | |
1877 var text: list<string> =<< trim TEXT | |
1878 var foo =<< trim FOO | |
1879 TEXT | |
1880 assert_equal(['var foo =<< trim FOO'], text) | |
1881 END | |
1882 v9.CheckDefAndScriptSuccess(lines) | |
1883 | |
1884 # extra whitespace before type is allowed | |
1885 lines =<< trim END | |
1886 var text: list<string> =<< trim TEXT | |
1887 var foo =<< trim FOO | |
1888 TEXT | |
1889 assert_equal(['var foo =<< trim FOO'], text) | |
1890 END | |
1891 v9.CheckDefAndScriptSuccess(lines) | |
1892 | |
1893 # missing whitespace before type is an error | |
1894 lines =<< trim END | |
1895 var text:list<string> =<< trim TEXT | |
1896 var foo =<< trim FOO | |
1897 TEXT | |
1898 assert_equal(['var foo =<< trim FOO'], text) | |
1899 END | |
1900 v9.CheckDefAndScriptFailure(lines, 'E1069:') | |
1901 | |
1902 # assign heredoc to list slice | |
1903 lines =<< trim END | |
1904 var text = [''] | |
1905 text[ : ] =<< trim TEXT | |
1906 var foo =<< trim FOO | |
1907 TEXT | |
1908 assert_equal(['var foo =<< trim FOO'], text) | |
1909 END | |
1910 v9.CheckDefAndScriptSuccess(lines) | |
1911 | |
1912 # assign heredoc to curly braces name in legacy function in Vim9 script | |
1913 lines =<< trim END | |
1914 vim9script | |
1915 func Func() | |
1916 let foo_3_bar = [''] | |
1917 let foo_{1 + 2}_bar[ : ] =<< trim TEXT | |
1918 var foo =<< trim FOO | |
1919 TEXT | |
1920 call assert_equal(['var foo =<< trim FOO'], foo_3_bar) | |
1921 endfunc | |
1922 Func() | |
1923 END | |
1924 v9.CheckScriptSuccess(lines) | |
1874 | 1925 |
1875 v9.CheckDefFailure(['var lines =<< trim END X', 'END'], 'E488:') | 1926 v9.CheckDefFailure(['var lines =<< trim END X', 'END'], 'E488:') |
1876 v9.CheckDefFailure(['var lines =<< trim END " comment', 'END'], 'E488:') | 1927 v9.CheckDefFailure(['var lines =<< trim END " comment', 'END'], 'E488:') |
1877 | 1928 |
1878 lines =<< trim [END] | 1929 lines =<< trim [END] |