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]