annotate src/testdir/test_let.vim @ 29664:6569c71c5ca5 v9.0.0172

patch 9.0.0172: trying to allocate zero bytes Commit: https://github.com/vim/vim/commit/1024690c015921b0a458172bc368133f63af1b89 Author: Bram Moolenaar <Bram@vim.org> Date: Mon Aug 8 17:08:05 2022 +0100 patch 9.0.0172: trying to allocate zero bytes Problem: Trying to allocate zero bytes. Solution: Do not allocate the proptype array when there are none. (closes #10867)
author Bram Moolenaar <Bram@vim.org>
date Mon, 08 Aug 2022 18:15:03 +0200
parents 3626ca6a20ea
children bbcdc76dcd71
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
11961
0240e7e3d736 patch 8.0.0861: still many old style tests
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
1 " Tests for the :let command.
0240e7e3d736 patch 8.0.0861: still many old style tests
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
2
28491
769599ee9f06 patch 8.2.4770: cannot easily mix expression and heredoc
Bram Moolenaar <Bram@vim.org>
parents: 25611
diff changeset
3 import './vim9.vim' as v9
769599ee9f06 patch 8.2.4770: cannot easily mix expression and heredoc
Bram Moolenaar <Bram@vim.org>
parents: 25611
diff changeset
4
11961
0240e7e3d736 patch 8.0.0861: still many old style tests
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
5 func Test_let()
0240e7e3d736 patch 8.0.0861: still many old style tests
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
6 " Test to not autoload when assigning. It causes internal error.
0240e7e3d736 patch 8.0.0861: still many old style tests
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
7 set runtimepath+=./sautest
0240e7e3d736 patch 8.0.0861: still many old style tests
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
8 let Test104#numvar = function('tr')
0240e7e3d736 patch 8.0.0861: still many old style tests
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
9 call assert_equal("function('tr')", string(Test104#numvar))
0240e7e3d736 patch 8.0.0861: still many old style tests
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
10
0240e7e3d736 patch 8.0.0861: still many old style tests
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
11 let a = 1
0240e7e3d736 patch 8.0.0861: still many old style tests
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
12 let b = 2
0240e7e3d736 patch 8.0.0861: still many old style tests
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
13
0240e7e3d736 patch 8.0.0861: still many old style tests
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
14 let out = execute('let a b')
0240e7e3d736 patch 8.0.0861: still many old style tests
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
15 let s = "\na #1\nb #2"
0240e7e3d736 patch 8.0.0861: still many old style tests
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
16 call assert_equal(s, out)
0240e7e3d736 patch 8.0.0861: still many old style tests
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
17
0240e7e3d736 patch 8.0.0861: still many old style tests
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
18 let out = execute('let {0 == 1 ? "a" : "b"}')
0240e7e3d736 patch 8.0.0861: still many old style tests
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
19 let s = "\nb #2"
0240e7e3d736 patch 8.0.0861: still many old style tests
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
20 call assert_equal(s, out)
0240e7e3d736 patch 8.0.0861: still many old style tests
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
21
0240e7e3d736 patch 8.0.0861: still many old style tests
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
22 let out = execute('let {0 == 1 ? "a" : "b"} a')
0240e7e3d736 patch 8.0.0861: still many old style tests
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
23 let s = "\nb #2\na #1"
0240e7e3d736 patch 8.0.0861: still many old style tests
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
24 call assert_equal(s, out)
0240e7e3d736 patch 8.0.0861: still many old style tests
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
25
0240e7e3d736 patch 8.0.0861: still many old style tests
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
26 let out = execute('let a {0 == 1 ? "a" : "b"}')
0240e7e3d736 patch 8.0.0861: still many old style tests
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
27 let s = "\na #1\nb #2"
0240e7e3d736 patch 8.0.0861: still many old style tests
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
28 call assert_equal(s, out)
18713
baf890fa1621 patch 8.1.2348: :const cannot be followed by "| endif"
Bram Moolenaar <Bram@vim.org>
parents: 18540
diff changeset
29
19689
da98d2ed8dc5 patch 8.2.0401: not enough test coverage for evalvars.c
Bram Moolenaar <Bram@vim.org>
parents: 18713
diff changeset
30 " Test for displaying a string variable
da98d2ed8dc5 patch 8.2.0401: not enough test coverage for evalvars.c
Bram Moolenaar <Bram@vim.org>
parents: 18713
diff changeset
31 let s = 'vim'
da98d2ed8dc5 patch 8.2.0401: not enough test coverage for evalvars.c
Bram Moolenaar <Bram@vim.org>
parents: 18713
diff changeset
32 let out = execute('let s')
da98d2ed8dc5 patch 8.2.0401: not enough test coverage for evalvars.c
Bram Moolenaar <Bram@vim.org>
parents: 18713
diff changeset
33 let s = "\ns vim"
da98d2ed8dc5 patch 8.2.0401: not enough test coverage for evalvars.c
Bram Moolenaar <Bram@vim.org>
parents: 18713
diff changeset
34 call assert_equal(s, out)
da98d2ed8dc5 patch 8.2.0401: not enough test coverage for evalvars.c
Bram Moolenaar <Bram@vim.org>
parents: 18713
diff changeset
35
da98d2ed8dc5 patch 8.2.0401: not enough test coverage for evalvars.c
Bram Moolenaar <Bram@vim.org>
parents: 18713
diff changeset
36 " Test for displaying a list variable
da98d2ed8dc5 patch 8.2.0401: not enough test coverage for evalvars.c
Bram Moolenaar <Bram@vim.org>
parents: 18713
diff changeset
37 let l = [1, 2]
da98d2ed8dc5 patch 8.2.0401: not enough test coverage for evalvars.c
Bram Moolenaar <Bram@vim.org>
parents: 18713
diff changeset
38 let out = execute('let l')
da98d2ed8dc5 patch 8.2.0401: not enough test coverage for evalvars.c
Bram Moolenaar <Bram@vim.org>
parents: 18713
diff changeset
39 let s = "\nl [1, 2]"
da98d2ed8dc5 patch 8.2.0401: not enough test coverage for evalvars.c
Bram Moolenaar <Bram@vim.org>
parents: 18713
diff changeset
40 call assert_equal(s, out)
da98d2ed8dc5 patch 8.2.0401: not enough test coverage for evalvars.c
Bram Moolenaar <Bram@vim.org>
parents: 18713
diff changeset
41
da98d2ed8dc5 patch 8.2.0401: not enough test coverage for evalvars.c
Bram Moolenaar <Bram@vim.org>
parents: 18713
diff changeset
42 " Test for displaying a dict variable
da98d2ed8dc5 patch 8.2.0401: not enough test coverage for evalvars.c
Bram Moolenaar <Bram@vim.org>
parents: 18713
diff changeset
43 let d = {'k' : 'v'}
da98d2ed8dc5 patch 8.2.0401: not enough test coverage for evalvars.c
Bram Moolenaar <Bram@vim.org>
parents: 18713
diff changeset
44 let out = execute('let d')
da98d2ed8dc5 patch 8.2.0401: not enough test coverage for evalvars.c
Bram Moolenaar <Bram@vim.org>
parents: 18713
diff changeset
45 let s = "\nd {'k': 'v'}"
da98d2ed8dc5 patch 8.2.0401: not enough test coverage for evalvars.c
Bram Moolenaar <Bram@vim.org>
parents: 18713
diff changeset
46 call assert_equal(s, out)
da98d2ed8dc5 patch 8.2.0401: not enough test coverage for evalvars.c
Bram Moolenaar <Bram@vim.org>
parents: 18713
diff changeset
47
da98d2ed8dc5 patch 8.2.0401: not enough test coverage for evalvars.c
Bram Moolenaar <Bram@vim.org>
parents: 18713
diff changeset
48 " Test for displaying a function reference variable
da98d2ed8dc5 patch 8.2.0401: not enough test coverage for evalvars.c
Bram Moolenaar <Bram@vim.org>
parents: 18713
diff changeset
49 let F = function('min')
da98d2ed8dc5 patch 8.2.0401: not enough test coverage for evalvars.c
Bram Moolenaar <Bram@vim.org>
parents: 18713
diff changeset
50 let out = execute('let F')
da98d2ed8dc5 patch 8.2.0401: not enough test coverage for evalvars.c
Bram Moolenaar <Bram@vim.org>
parents: 18713
diff changeset
51 let s = "\nF *min()"
da98d2ed8dc5 patch 8.2.0401: not enough test coverage for evalvars.c
Bram Moolenaar <Bram@vim.org>
parents: 18713
diff changeset
52 call assert_equal(s, out)
da98d2ed8dc5 patch 8.2.0401: not enough test coverage for evalvars.c
Bram Moolenaar <Bram@vim.org>
parents: 18713
diff changeset
53
18713
baf890fa1621 patch 8.1.2348: :const cannot be followed by "| endif"
Bram Moolenaar <Bram@vim.org>
parents: 18540
diff changeset
54 let x = 0
baf890fa1621 patch 8.1.2348: :const cannot be followed by "| endif"
Bram Moolenaar <Bram@vim.org>
parents: 18540
diff changeset
55 if 0 | let x = 1 | endif
baf890fa1621 patch 8.1.2348: :const cannot be followed by "| endif"
Bram Moolenaar <Bram@vim.org>
parents: 18540
diff changeset
56 call assert_equal(0, x)
19689
da98d2ed8dc5 patch 8.2.0401: not enough test coverage for evalvars.c
Bram Moolenaar <Bram@vim.org>
parents: 18713
diff changeset
57
da98d2ed8dc5 patch 8.2.0401: not enough test coverage for evalvars.c
Bram Moolenaar <Bram@vim.org>
parents: 18713
diff changeset
58 " Display a list item using an out of range index
da98d2ed8dc5 patch 8.2.0401: not enough test coverage for evalvars.c
Bram Moolenaar <Bram@vim.org>
parents: 18713
diff changeset
59 let l = [10]
da98d2ed8dc5 patch 8.2.0401: not enough test coverage for evalvars.c
Bram Moolenaar <Bram@vim.org>
parents: 18713
diff changeset
60 call assert_fails('let l[1]', 'E684:')
da98d2ed8dc5 patch 8.2.0401: not enough test coverage for evalvars.c
Bram Moolenaar <Bram@vim.org>
parents: 18713
diff changeset
61
da98d2ed8dc5 patch 8.2.0401: not enough test coverage for evalvars.c
Bram Moolenaar <Bram@vim.org>
parents: 18713
diff changeset
62 " List special variable dictionaries
da98d2ed8dc5 patch 8.2.0401: not enough test coverage for evalvars.c
Bram Moolenaar <Bram@vim.org>
parents: 18713
diff changeset
63 let g:Test_Global_Var = 5
da98d2ed8dc5 patch 8.2.0401: not enough test coverage for evalvars.c
Bram Moolenaar <Bram@vim.org>
parents: 18713
diff changeset
64 call assert_match("\nTest_Global_Var #5", execute('let g:'))
da98d2ed8dc5 patch 8.2.0401: not enough test coverage for evalvars.c
Bram Moolenaar <Bram@vim.org>
parents: 18713
diff changeset
65 unlet g:Test_Global_Var
da98d2ed8dc5 patch 8.2.0401: not enough test coverage for evalvars.c
Bram Moolenaar <Bram@vim.org>
parents: 18713
diff changeset
66
da98d2ed8dc5 patch 8.2.0401: not enough test coverage for evalvars.c
Bram Moolenaar <Bram@vim.org>
parents: 18713
diff changeset
67 let b:Test_Buf_Var = 8
da98d2ed8dc5 patch 8.2.0401: not enough test coverage for evalvars.c
Bram Moolenaar <Bram@vim.org>
parents: 18713
diff changeset
68 call assert_match("\nb:Test_Buf_Var #8", execute('let b:'))
da98d2ed8dc5 patch 8.2.0401: not enough test coverage for evalvars.c
Bram Moolenaar <Bram@vim.org>
parents: 18713
diff changeset
69 unlet b:Test_Buf_Var
da98d2ed8dc5 patch 8.2.0401: not enough test coverage for evalvars.c
Bram Moolenaar <Bram@vim.org>
parents: 18713
diff changeset
70
da98d2ed8dc5 patch 8.2.0401: not enough test coverage for evalvars.c
Bram Moolenaar <Bram@vim.org>
parents: 18713
diff changeset
71 let w:Test_Win_Var = 'foo'
da98d2ed8dc5 patch 8.2.0401: not enough test coverage for evalvars.c
Bram Moolenaar <Bram@vim.org>
parents: 18713
diff changeset
72 call assert_equal("\nw:Test_Win_Var foo", execute('let w:'))
da98d2ed8dc5 patch 8.2.0401: not enough test coverage for evalvars.c
Bram Moolenaar <Bram@vim.org>
parents: 18713
diff changeset
73 unlet w:Test_Win_Var
da98d2ed8dc5 patch 8.2.0401: not enough test coverage for evalvars.c
Bram Moolenaar <Bram@vim.org>
parents: 18713
diff changeset
74
da98d2ed8dc5 patch 8.2.0401: not enough test coverage for evalvars.c
Bram Moolenaar <Bram@vim.org>
parents: 18713
diff changeset
75 let t:Test_Tab_Var = 'bar'
da98d2ed8dc5 patch 8.2.0401: not enough test coverage for evalvars.c
Bram Moolenaar <Bram@vim.org>
parents: 18713
diff changeset
76 call assert_equal("\nt:Test_Tab_Var bar", execute('let t:'))
da98d2ed8dc5 patch 8.2.0401: not enough test coverage for evalvars.c
Bram Moolenaar <Bram@vim.org>
parents: 18713
diff changeset
77 unlet t:Test_Tab_Var
da98d2ed8dc5 patch 8.2.0401: not enough test coverage for evalvars.c
Bram Moolenaar <Bram@vim.org>
parents: 18713
diff changeset
78
da98d2ed8dc5 patch 8.2.0401: not enough test coverage for evalvars.c
Bram Moolenaar <Bram@vim.org>
parents: 18713
diff changeset
79 let s:Test_Script_Var = [7]
da98d2ed8dc5 patch 8.2.0401: not enough test coverage for evalvars.c
Bram Moolenaar <Bram@vim.org>
parents: 18713
diff changeset
80 call assert_match("\ns:Test_Script_Var \\[7]", execute('let s:'))
da98d2ed8dc5 patch 8.2.0401: not enough test coverage for evalvars.c
Bram Moolenaar <Bram@vim.org>
parents: 18713
diff changeset
81 unlet s:Test_Script_Var
da98d2ed8dc5 patch 8.2.0401: not enough test coverage for evalvars.c
Bram Moolenaar <Bram@vim.org>
parents: 18713
diff changeset
82
da98d2ed8dc5 patch 8.2.0401: not enough test coverage for evalvars.c
Bram Moolenaar <Bram@vim.org>
parents: 18713
diff changeset
83 let l:Test_Local_Var = {'k' : 5}
da98d2ed8dc5 patch 8.2.0401: not enough test coverage for evalvars.c
Bram Moolenaar <Bram@vim.org>
parents: 18713
diff changeset
84 call assert_match("\nl:Test_Local_Var {'k': 5}", execute('let l:'))
da98d2ed8dc5 patch 8.2.0401: not enough test coverage for evalvars.c
Bram Moolenaar <Bram@vim.org>
parents: 18713
diff changeset
85 call assert_match("v:errors []", execute('let v:'))
20156
49694eceaa55 patch 8.2.0633: crash when using null partial in filter()
Bram Moolenaar <Bram@vim.org>
parents: 20128
diff changeset
86
49694eceaa55 patch 8.2.0633: crash when using null partial in filter()
Bram Moolenaar <Bram@vim.org>
parents: 20128
diff changeset
87 " Test for assigning multiple list items
49694eceaa55 patch 8.2.0633: crash when using null partial in filter()
Bram Moolenaar <Bram@vim.org>
parents: 20128
diff changeset
88 let l = [1, 2, 3]
49694eceaa55 patch 8.2.0633: crash when using null partial in filter()
Bram Moolenaar <Bram@vim.org>
parents: 20128
diff changeset
89 let [l[0], l[1]] = [10, 20]
49694eceaa55 patch 8.2.0633: crash when using null partial in filter()
Bram Moolenaar <Bram@vim.org>
parents: 20128
diff changeset
90 call assert_equal([10, 20, 3], l)
49694eceaa55 patch 8.2.0633: crash when using null partial in filter()
Bram Moolenaar <Bram@vim.org>
parents: 20128
diff changeset
91
49694eceaa55 patch 8.2.0633: crash when using null partial in filter()
Bram Moolenaar <Bram@vim.org>
parents: 20128
diff changeset
92 " Test for errors in conditional expression
49694eceaa55 patch 8.2.0633: crash when using null partial in filter()
Bram Moolenaar <Bram@vim.org>
parents: 20128
diff changeset
93 call assert_fails('let val = [] ? 1 : 2', 'E745:')
49694eceaa55 patch 8.2.0633: crash when using null partial in filter()
Bram Moolenaar <Bram@vim.org>
parents: 20128
diff changeset
94 call assert_fails('let val = 1 ? 5+ : 6', 'E121:')
49694eceaa55 patch 8.2.0633: crash when using null partial in filter()
Bram Moolenaar <Bram@vim.org>
parents: 20128
diff changeset
95 call assert_fails('let val = 1 ? 0 : 5+', 'E15:')
49694eceaa55 patch 8.2.0633: crash when using null partial in filter()
Bram Moolenaar <Bram@vim.org>
parents: 20128
diff changeset
96 call assert_false(exists('val'))
49694eceaa55 patch 8.2.0633: crash when using null partial in filter()
Bram Moolenaar <Bram@vim.org>
parents: 20128
diff changeset
97
49694eceaa55 patch 8.2.0633: crash when using null partial in filter()
Bram Moolenaar <Bram@vim.org>
parents: 20128
diff changeset
98 " Test for errors in logical operators
49694eceaa55 patch 8.2.0633: crash when using null partial in filter()
Bram Moolenaar <Bram@vim.org>
parents: 20128
diff changeset
99 let @a = 'if [] || 0 | let val = 2 | endif'
49694eceaa55 patch 8.2.0633: crash when using null partial in filter()
Bram Moolenaar <Bram@vim.org>
parents: 20128
diff changeset
100 call assert_fails('exe @a', 'E745:')
49694eceaa55 patch 8.2.0633: crash when using null partial in filter()
Bram Moolenaar <Bram@vim.org>
parents: 20128
diff changeset
101 call assert_fails('call feedkeys(":let val = 0 || []\<cr>", "xt")', 'E745:')
49694eceaa55 patch 8.2.0633: crash when using null partial in filter()
Bram Moolenaar <Bram@vim.org>
parents: 20128
diff changeset
102 call assert_fails('exe "let val = [] && 5"', 'E745:')
49694eceaa55 patch 8.2.0633: crash when using null partial in filter()
Bram Moolenaar <Bram@vim.org>
parents: 20128
diff changeset
103 call assert_fails('exe "let val = 6 && []"', 'E745:')
11961
0240e7e3d736 patch 8.0.0861: still many old style tests
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
104 endfunc
15762
dff66c4670b1 patch 8.1.0888: the a: dict is not immutable as documented
Bram Moolenaar <Bram@vim.org>
parents: 11961
diff changeset
105
dff66c4670b1 patch 8.1.0888: the a: dict is not immutable as documented
Bram Moolenaar <Bram@vim.org>
parents: 11961
diff changeset
106 func s:set_arg1(a) abort
dff66c4670b1 patch 8.1.0888: the a: dict is not immutable as documented
Bram Moolenaar <Bram@vim.org>
parents: 11961
diff changeset
107 let a:a = 1
dff66c4670b1 patch 8.1.0888: the a: dict is not immutable as documented
Bram Moolenaar <Bram@vim.org>
parents: 11961
diff changeset
108 endfunction
dff66c4670b1 patch 8.1.0888: the a: dict is not immutable as documented
Bram Moolenaar <Bram@vim.org>
parents: 11961
diff changeset
109
dff66c4670b1 patch 8.1.0888: the a: dict is not immutable as documented
Bram Moolenaar <Bram@vim.org>
parents: 11961
diff changeset
110 func s:set_arg2(a) abort
dff66c4670b1 patch 8.1.0888: the a: dict is not immutable as documented
Bram Moolenaar <Bram@vim.org>
parents: 11961
diff changeset
111 let a:b = 1
dff66c4670b1 patch 8.1.0888: the a: dict is not immutable as documented
Bram Moolenaar <Bram@vim.org>
parents: 11961
diff changeset
112 endfunction
dff66c4670b1 patch 8.1.0888: the a: dict is not immutable as documented
Bram Moolenaar <Bram@vim.org>
parents: 11961
diff changeset
113
dff66c4670b1 patch 8.1.0888: the a: dict is not immutable as documented
Bram Moolenaar <Bram@vim.org>
parents: 11961
diff changeset
114 func s:set_arg3(a) abort
dff66c4670b1 patch 8.1.0888: the a: dict is not immutable as documented
Bram Moolenaar <Bram@vim.org>
parents: 11961
diff changeset
115 let b = a:
dff66c4670b1 patch 8.1.0888: the a: dict is not immutable as documented
Bram Moolenaar <Bram@vim.org>
parents: 11961
diff changeset
116 let b['a'] = 1
dff66c4670b1 patch 8.1.0888: the a: dict is not immutable as documented
Bram Moolenaar <Bram@vim.org>
parents: 11961
diff changeset
117 endfunction
dff66c4670b1 patch 8.1.0888: the a: dict is not immutable as documented
Bram Moolenaar <Bram@vim.org>
parents: 11961
diff changeset
118
dff66c4670b1 patch 8.1.0888: the a: dict is not immutable as documented
Bram Moolenaar <Bram@vim.org>
parents: 11961
diff changeset
119 func s:set_arg4(a) abort
dff66c4670b1 patch 8.1.0888: the a: dict is not immutable as documented
Bram Moolenaar <Bram@vim.org>
parents: 11961
diff changeset
120 let b = a:
dff66c4670b1 patch 8.1.0888: the a: dict is not immutable as documented
Bram Moolenaar <Bram@vim.org>
parents: 11961
diff changeset
121 let b['a'] = 1
dff66c4670b1 patch 8.1.0888: the a: dict is not immutable as documented
Bram Moolenaar <Bram@vim.org>
parents: 11961
diff changeset
122 endfunction
dff66c4670b1 patch 8.1.0888: the a: dict is not immutable as documented
Bram Moolenaar <Bram@vim.org>
parents: 11961
diff changeset
123
dff66c4670b1 patch 8.1.0888: the a: dict is not immutable as documented
Bram Moolenaar <Bram@vim.org>
parents: 11961
diff changeset
124 func s:set_arg5(a) abort
dff66c4670b1 patch 8.1.0888: the a: dict is not immutable as documented
Bram Moolenaar <Bram@vim.org>
parents: 11961
diff changeset
125 let b = a:
dff66c4670b1 patch 8.1.0888: the a: dict is not immutable as documented
Bram Moolenaar <Bram@vim.org>
parents: 11961
diff changeset
126 let b['a'][0] = 1
dff66c4670b1 patch 8.1.0888: the a: dict is not immutable as documented
Bram Moolenaar <Bram@vim.org>
parents: 11961
diff changeset
127 endfunction
dff66c4670b1 patch 8.1.0888: the a: dict is not immutable as documented
Bram Moolenaar <Bram@vim.org>
parents: 11961
diff changeset
128
dff66c4670b1 patch 8.1.0888: the a: dict is not immutable as documented
Bram Moolenaar <Bram@vim.org>
parents: 11961
diff changeset
129 func s:set_arg6(a) abort
dff66c4670b1 patch 8.1.0888: the a: dict is not immutable as documented
Bram Moolenaar <Bram@vim.org>
parents: 11961
diff changeset
130 let a:a[0] = 1
dff66c4670b1 patch 8.1.0888: the a: dict is not immutable as documented
Bram Moolenaar <Bram@vim.org>
parents: 11961
diff changeset
131 endfunction
dff66c4670b1 patch 8.1.0888: the a: dict is not immutable as documented
Bram Moolenaar <Bram@vim.org>
parents: 11961
diff changeset
132
dff66c4670b1 patch 8.1.0888: the a: dict is not immutable as documented
Bram Moolenaar <Bram@vim.org>
parents: 11961
diff changeset
133 func s:set_arg7(a) abort
dff66c4670b1 patch 8.1.0888: the a: dict is not immutable as documented
Bram Moolenaar <Bram@vim.org>
parents: 11961
diff changeset
134 call extend(a:, {'a': 1})
dff66c4670b1 patch 8.1.0888: the a: dict is not immutable as documented
Bram Moolenaar <Bram@vim.org>
parents: 11961
diff changeset
135 endfunction
dff66c4670b1 patch 8.1.0888: the a: dict is not immutable as documented
Bram Moolenaar <Bram@vim.org>
parents: 11961
diff changeset
136
dff66c4670b1 patch 8.1.0888: the a: dict is not immutable as documented
Bram Moolenaar <Bram@vim.org>
parents: 11961
diff changeset
137 func s:set_arg8(a) abort
dff66c4670b1 patch 8.1.0888: the a: dict is not immutable as documented
Bram Moolenaar <Bram@vim.org>
parents: 11961
diff changeset
138 call extend(a:, {'b': 1})
dff66c4670b1 patch 8.1.0888: the a: dict is not immutable as documented
Bram Moolenaar <Bram@vim.org>
parents: 11961
diff changeset
139 endfunction
dff66c4670b1 patch 8.1.0888: the a: dict is not immutable as documented
Bram Moolenaar <Bram@vim.org>
parents: 11961
diff changeset
140
dff66c4670b1 patch 8.1.0888: the a: dict is not immutable as documented
Bram Moolenaar <Bram@vim.org>
parents: 11961
diff changeset
141 func s:set_arg9(a) abort
dff66c4670b1 patch 8.1.0888: the a: dict is not immutable as documented
Bram Moolenaar <Bram@vim.org>
parents: 11961
diff changeset
142 let a:['b'] = 1
dff66c4670b1 patch 8.1.0888: the a: dict is not immutable as documented
Bram Moolenaar <Bram@vim.org>
parents: 11961
diff changeset
143 endfunction
dff66c4670b1 patch 8.1.0888: the a: dict is not immutable as documented
Bram Moolenaar <Bram@vim.org>
parents: 11961
diff changeset
144
dff66c4670b1 patch 8.1.0888: the a: dict is not immutable as documented
Bram Moolenaar <Bram@vim.org>
parents: 11961
diff changeset
145 func s:set_arg10(a) abort
dff66c4670b1 patch 8.1.0888: the a: dict is not immutable as documented
Bram Moolenaar <Bram@vim.org>
parents: 11961
diff changeset
146 let b = a:
dff66c4670b1 patch 8.1.0888: the a: dict is not immutable as documented
Bram Moolenaar <Bram@vim.org>
parents: 11961
diff changeset
147 call extend(b, {'a': 1})
dff66c4670b1 patch 8.1.0888: the a: dict is not immutable as documented
Bram Moolenaar <Bram@vim.org>
parents: 11961
diff changeset
148 endfunction
dff66c4670b1 patch 8.1.0888: the a: dict is not immutable as documented
Bram Moolenaar <Bram@vim.org>
parents: 11961
diff changeset
149
dff66c4670b1 patch 8.1.0888: the a: dict is not immutable as documented
Bram Moolenaar <Bram@vim.org>
parents: 11961
diff changeset
150 func s:set_arg11(a) abort
dff66c4670b1 patch 8.1.0888: the a: dict is not immutable as documented
Bram Moolenaar <Bram@vim.org>
parents: 11961
diff changeset
151 let b = a:
dff66c4670b1 patch 8.1.0888: the a: dict is not immutable as documented
Bram Moolenaar <Bram@vim.org>
parents: 11961
diff changeset
152 call extend(b, {'b': 1})
dff66c4670b1 patch 8.1.0888: the a: dict is not immutable as documented
Bram Moolenaar <Bram@vim.org>
parents: 11961
diff changeset
153 endfunction
dff66c4670b1 patch 8.1.0888: the a: dict is not immutable as documented
Bram Moolenaar <Bram@vim.org>
parents: 11961
diff changeset
154
dff66c4670b1 patch 8.1.0888: the a: dict is not immutable as documented
Bram Moolenaar <Bram@vim.org>
parents: 11961
diff changeset
155 func s:set_arg12(a) abort
dff66c4670b1 patch 8.1.0888: the a: dict is not immutable as documented
Bram Moolenaar <Bram@vim.org>
parents: 11961
diff changeset
156 let b = a:
dff66c4670b1 patch 8.1.0888: the a: dict is not immutable as documented
Bram Moolenaar <Bram@vim.org>
parents: 11961
diff changeset
157 let b['b'] = 1
dff66c4670b1 patch 8.1.0888: the a: dict is not immutable as documented
Bram Moolenaar <Bram@vim.org>
parents: 11961
diff changeset
158 endfunction
dff66c4670b1 patch 8.1.0888: the a: dict is not immutable as documented
Bram Moolenaar <Bram@vim.org>
parents: 11961
diff changeset
159
dff66c4670b1 patch 8.1.0888: the a: dict is not immutable as documented
Bram Moolenaar <Bram@vim.org>
parents: 11961
diff changeset
160 func Test_let_arg_fail()
dff66c4670b1 patch 8.1.0888: the a: dict is not immutable as documented
Bram Moolenaar <Bram@vim.org>
parents: 11961
diff changeset
161 call assert_fails('call s:set_arg1(1)', 'E46:')
dff66c4670b1 patch 8.1.0888: the a: dict is not immutable as documented
Bram Moolenaar <Bram@vim.org>
parents: 11961
diff changeset
162 call assert_fails('call s:set_arg2(1)', 'E461:')
dff66c4670b1 patch 8.1.0888: the a: dict is not immutable as documented
Bram Moolenaar <Bram@vim.org>
parents: 11961
diff changeset
163 call assert_fails('call s:set_arg3(1)', 'E46:')
dff66c4670b1 patch 8.1.0888: the a: dict is not immutable as documented
Bram Moolenaar <Bram@vim.org>
parents: 11961
diff changeset
164 call assert_fails('call s:set_arg4(1)', 'E46:')
dff66c4670b1 patch 8.1.0888: the a: dict is not immutable as documented
Bram Moolenaar <Bram@vim.org>
parents: 11961
diff changeset
165 call assert_fails('call s:set_arg5(1)', 'E46:')
dff66c4670b1 patch 8.1.0888: the a: dict is not immutable as documented
Bram Moolenaar <Bram@vim.org>
parents: 11961
diff changeset
166 call s:set_arg6([0])
dff66c4670b1 patch 8.1.0888: the a: dict is not immutable as documented
Bram Moolenaar <Bram@vim.org>
parents: 11961
diff changeset
167 call assert_fails('call s:set_arg7(1)', 'E742:')
dff66c4670b1 patch 8.1.0888: the a: dict is not immutable as documented
Bram Moolenaar <Bram@vim.org>
parents: 11961
diff changeset
168 call assert_fails('call s:set_arg8(1)', 'E742:')
dff66c4670b1 patch 8.1.0888: the a: dict is not immutable as documented
Bram Moolenaar <Bram@vim.org>
parents: 11961
diff changeset
169 call assert_fails('call s:set_arg9(1)', 'E461:')
dff66c4670b1 patch 8.1.0888: the a: dict is not immutable as documented
Bram Moolenaar <Bram@vim.org>
parents: 11961
diff changeset
170 call assert_fails('call s:set_arg10(1)', 'E742:')
dff66c4670b1 patch 8.1.0888: the a: dict is not immutable as documented
Bram Moolenaar <Bram@vim.org>
parents: 11961
diff changeset
171 call assert_fails('call s:set_arg11(1)', 'E742:')
dff66c4670b1 patch 8.1.0888: the a: dict is not immutable as documented
Bram Moolenaar <Bram@vim.org>
parents: 11961
diff changeset
172 call assert_fails('call s:set_arg12(1)', 'E461:')
dff66c4670b1 patch 8.1.0888: the a: dict is not immutable as documented
Bram Moolenaar <Bram@vim.org>
parents: 11961
diff changeset
173 endfunction
dff66c4670b1 patch 8.1.0888: the a: dict is not immutable as documented
Bram Moolenaar <Bram@vim.org>
parents: 11961
diff changeset
174
dff66c4670b1 patch 8.1.0888: the a: dict is not immutable as documented
Bram Moolenaar <Bram@vim.org>
parents: 11961
diff changeset
175 func s:set_varg1(...) abort
dff66c4670b1 patch 8.1.0888: the a: dict is not immutable as documented
Bram Moolenaar <Bram@vim.org>
parents: 11961
diff changeset
176 let a:000 = []
dff66c4670b1 patch 8.1.0888: the a: dict is not immutable as documented
Bram Moolenaar <Bram@vim.org>
parents: 11961
diff changeset
177 endfunction
dff66c4670b1 patch 8.1.0888: the a: dict is not immutable as documented
Bram Moolenaar <Bram@vim.org>
parents: 11961
diff changeset
178
dff66c4670b1 patch 8.1.0888: the a: dict is not immutable as documented
Bram Moolenaar <Bram@vim.org>
parents: 11961
diff changeset
179 func s:set_varg2(...) abort
dff66c4670b1 patch 8.1.0888: the a: dict is not immutable as documented
Bram Moolenaar <Bram@vim.org>
parents: 11961
diff changeset
180 let a:000[0] = 1
dff66c4670b1 patch 8.1.0888: the a: dict is not immutable as documented
Bram Moolenaar <Bram@vim.org>
parents: 11961
diff changeset
181 endfunction
dff66c4670b1 patch 8.1.0888: the a: dict is not immutable as documented
Bram Moolenaar <Bram@vim.org>
parents: 11961
diff changeset
182
dff66c4670b1 patch 8.1.0888: the a: dict is not immutable as documented
Bram Moolenaar <Bram@vim.org>
parents: 11961
diff changeset
183 func s:set_varg3(...) abort
dff66c4670b1 patch 8.1.0888: the a: dict is not immutable as documented
Bram Moolenaar <Bram@vim.org>
parents: 11961
diff changeset
184 let a:000 += [1]
dff66c4670b1 patch 8.1.0888: the a: dict is not immutable as documented
Bram Moolenaar <Bram@vim.org>
parents: 11961
diff changeset
185 endfunction
dff66c4670b1 patch 8.1.0888: the a: dict is not immutable as documented
Bram Moolenaar <Bram@vim.org>
parents: 11961
diff changeset
186
dff66c4670b1 patch 8.1.0888: the a: dict is not immutable as documented
Bram Moolenaar <Bram@vim.org>
parents: 11961
diff changeset
187 func s:set_varg4(...) abort
dff66c4670b1 patch 8.1.0888: the a: dict is not immutable as documented
Bram Moolenaar <Bram@vim.org>
parents: 11961
diff changeset
188 call add(a:000, 1)
dff66c4670b1 patch 8.1.0888: the a: dict is not immutable as documented
Bram Moolenaar <Bram@vim.org>
parents: 11961
diff changeset
189 endfunction
dff66c4670b1 patch 8.1.0888: the a: dict is not immutable as documented
Bram Moolenaar <Bram@vim.org>
parents: 11961
diff changeset
190
dff66c4670b1 patch 8.1.0888: the a: dict is not immutable as documented
Bram Moolenaar <Bram@vim.org>
parents: 11961
diff changeset
191 func s:set_varg5(...) abort
dff66c4670b1 patch 8.1.0888: the a: dict is not immutable as documented
Bram Moolenaar <Bram@vim.org>
parents: 11961
diff changeset
192 let a:000[0][0] = 1
dff66c4670b1 patch 8.1.0888: the a: dict is not immutable as documented
Bram Moolenaar <Bram@vim.org>
parents: 11961
diff changeset
193 endfunction
dff66c4670b1 patch 8.1.0888: the a: dict is not immutable as documented
Bram Moolenaar <Bram@vim.org>
parents: 11961
diff changeset
194
dff66c4670b1 patch 8.1.0888: the a: dict is not immutable as documented
Bram Moolenaar <Bram@vim.org>
parents: 11961
diff changeset
195 func s:set_varg6(...) abort
dff66c4670b1 patch 8.1.0888: the a: dict is not immutable as documented
Bram Moolenaar <Bram@vim.org>
parents: 11961
diff changeset
196 let b = a:000
dff66c4670b1 patch 8.1.0888: the a: dict is not immutable as documented
Bram Moolenaar <Bram@vim.org>
parents: 11961
diff changeset
197 let b[0] = 1
dff66c4670b1 patch 8.1.0888: the a: dict is not immutable as documented
Bram Moolenaar <Bram@vim.org>
parents: 11961
diff changeset
198 endfunction
dff66c4670b1 patch 8.1.0888: the a: dict is not immutable as documented
Bram Moolenaar <Bram@vim.org>
parents: 11961
diff changeset
199
dff66c4670b1 patch 8.1.0888: the a: dict is not immutable as documented
Bram Moolenaar <Bram@vim.org>
parents: 11961
diff changeset
200 func s:set_varg7(...) abort
dff66c4670b1 patch 8.1.0888: the a: dict is not immutable as documented
Bram Moolenaar <Bram@vim.org>
parents: 11961
diff changeset
201 let b = a:000
dff66c4670b1 patch 8.1.0888: the a: dict is not immutable as documented
Bram Moolenaar <Bram@vim.org>
parents: 11961
diff changeset
202 let b += [1]
dff66c4670b1 patch 8.1.0888: the a: dict is not immutable as documented
Bram Moolenaar <Bram@vim.org>
parents: 11961
diff changeset
203 endfunction
dff66c4670b1 patch 8.1.0888: the a: dict is not immutable as documented
Bram Moolenaar <Bram@vim.org>
parents: 11961
diff changeset
204
dff66c4670b1 patch 8.1.0888: the a: dict is not immutable as documented
Bram Moolenaar <Bram@vim.org>
parents: 11961
diff changeset
205 func s:set_varg8(...) abort
dff66c4670b1 patch 8.1.0888: the a: dict is not immutable as documented
Bram Moolenaar <Bram@vim.org>
parents: 11961
diff changeset
206 let b = a:000
dff66c4670b1 patch 8.1.0888: the a: dict is not immutable as documented
Bram Moolenaar <Bram@vim.org>
parents: 11961
diff changeset
207 call add(b, 1)
dff66c4670b1 patch 8.1.0888: the a: dict is not immutable as documented
Bram Moolenaar <Bram@vim.org>
parents: 11961
diff changeset
208 endfunction
dff66c4670b1 patch 8.1.0888: the a: dict is not immutable as documented
Bram Moolenaar <Bram@vim.org>
parents: 11961
diff changeset
209
dff66c4670b1 patch 8.1.0888: the a: dict is not immutable as documented
Bram Moolenaar <Bram@vim.org>
parents: 11961
diff changeset
210 func s:set_varg9(...) abort
dff66c4670b1 patch 8.1.0888: the a: dict is not immutable as documented
Bram Moolenaar <Bram@vim.org>
parents: 11961
diff changeset
211 let b = a:000
dff66c4670b1 patch 8.1.0888: the a: dict is not immutable as documented
Bram Moolenaar <Bram@vim.org>
parents: 11961
diff changeset
212 let b[0][0] = 1
dff66c4670b1 patch 8.1.0888: the a: dict is not immutable as documented
Bram Moolenaar <Bram@vim.org>
parents: 11961
diff changeset
213 endfunction
dff66c4670b1 patch 8.1.0888: the a: dict is not immutable as documented
Bram Moolenaar <Bram@vim.org>
parents: 11961
diff changeset
214
dff66c4670b1 patch 8.1.0888: the a: dict is not immutable as documented
Bram Moolenaar <Bram@vim.org>
parents: 11961
diff changeset
215 func Test_let_varg_fail()
dff66c4670b1 patch 8.1.0888: the a: dict is not immutable as documented
Bram Moolenaar <Bram@vim.org>
parents: 11961
diff changeset
216 call assert_fails('call s:set_varg1(1)', 'E46:')
dff66c4670b1 patch 8.1.0888: the a: dict is not immutable as documented
Bram Moolenaar <Bram@vim.org>
parents: 11961
diff changeset
217 call assert_fails('call s:set_varg2(1)', 'E742:')
dff66c4670b1 patch 8.1.0888: the a: dict is not immutable as documented
Bram Moolenaar <Bram@vim.org>
parents: 11961
diff changeset
218 call assert_fails('call s:set_varg3(1)', 'E46:')
dff66c4670b1 patch 8.1.0888: the a: dict is not immutable as documented
Bram Moolenaar <Bram@vim.org>
parents: 11961
diff changeset
219 call assert_fails('call s:set_varg4(1)', 'E742:')
dff66c4670b1 patch 8.1.0888: the a: dict is not immutable as documented
Bram Moolenaar <Bram@vim.org>
parents: 11961
diff changeset
220 call s:set_varg5([0])
dff66c4670b1 patch 8.1.0888: the a: dict is not immutable as documented
Bram Moolenaar <Bram@vim.org>
parents: 11961
diff changeset
221 call assert_fails('call s:set_varg6(1)', 'E742:')
15780
5b6c3c7feba8 patch 8.1.0897: can modify a:000 when using a reference
Bram Moolenaar <Bram@vim.org>
parents: 15762
diff changeset
222 call assert_fails('call s:set_varg7(1)', 'E742:')
15762
dff66c4670b1 patch 8.1.0888: the a: dict is not immutable as documented
Bram Moolenaar <Bram@vim.org>
parents: 11961
diff changeset
223 call assert_fails('call s:set_varg8(1)', 'E742:')
dff66c4670b1 patch 8.1.0888: the a: dict is not immutable as documented
Bram Moolenaar <Bram@vim.org>
parents: 11961
diff changeset
224 call s:set_varg9([0])
dff66c4670b1 patch 8.1.0888: the a: dict is not immutable as documented
Bram Moolenaar <Bram@vim.org>
parents: 11961
diff changeset
225 endfunction
16172
6b0836727cf3 patch 8.1.1091: MS-Windows: cannot use multi-byte chars in environment var
Bram Moolenaar <Bram@vim.org>
parents: 15780
diff changeset
226
6b0836727cf3 patch 8.1.1091: MS-Windows: cannot use multi-byte chars in environment var
Bram Moolenaar <Bram@vim.org>
parents: 15780
diff changeset
227 func Test_let_utf8_environment()
6b0836727cf3 patch 8.1.1091: MS-Windows: cannot use multi-byte chars in environment var
Bram Moolenaar <Bram@vim.org>
parents: 15780
diff changeset
228 let $a = 'ĀĒĪŌŪあいうえお'
6b0836727cf3 patch 8.1.1091: MS-Windows: cannot use multi-byte chars in environment var
Bram Moolenaar <Bram@vim.org>
parents: 15780
diff changeset
229 call assert_equal('ĀĒĪŌŪあいうえお', $a)
6b0836727cf3 patch 8.1.1091: MS-Windows: cannot use multi-byte chars in environment var
Bram Moolenaar <Bram@vim.org>
parents: 15780
diff changeset
230 endfunc
16704
a927fdf9a4b0 patch 8.1.1354: getting a list of text lines is clumsy
Bram Moolenaar <Bram@vim.org>
parents: 16172
diff changeset
231
18540
f7bb0e413fe1 patch 8.1.2264: there are two test files for :let
Bram Moolenaar <Bram@vim.org>
parents: 18536
diff changeset
232 func Test_let_no_type_checking()
f7bb0e413fe1 patch 8.1.2264: there are two test files for :let
Bram Moolenaar <Bram@vim.org>
parents: 18536
diff changeset
233 let v = 1
f7bb0e413fe1 patch 8.1.2264: there are two test files for :let
Bram Moolenaar <Bram@vim.org>
parents: 18536
diff changeset
234 let v = [1,2,3]
f7bb0e413fe1 patch 8.1.2264: there are two test files for :let
Bram Moolenaar <Bram@vim.org>
parents: 18536
diff changeset
235 let v = {'a': 1, 'b': 2}
f7bb0e413fe1 patch 8.1.2264: there are two test files for :let
Bram Moolenaar <Bram@vim.org>
parents: 18536
diff changeset
236 let v = 3.4
f7bb0e413fe1 patch 8.1.2264: there are two test files for :let
Bram Moolenaar <Bram@vim.org>
parents: 18536
diff changeset
237 let v = 'hello'
f7bb0e413fe1 patch 8.1.2264: there are two test files for :let
Bram Moolenaar <Bram@vim.org>
parents: 18536
diff changeset
238 endfunc
f7bb0e413fe1 patch 8.1.2264: there are two test files for :let
Bram Moolenaar <Bram@vim.org>
parents: 18536
diff changeset
239
f7bb0e413fe1 patch 8.1.2264: there are two test files for :let
Bram Moolenaar <Bram@vim.org>
parents: 18536
diff changeset
240 func Test_let_termcap()
f7bb0e413fe1 patch 8.1.2264: there are two test files for :let
Bram Moolenaar <Bram@vim.org>
parents: 18536
diff changeset
241 " Terminal code
f7bb0e413fe1 patch 8.1.2264: there are two test files for :let
Bram Moolenaar <Bram@vim.org>
parents: 18536
diff changeset
242 let old_t_te = &t_te
f7bb0e413fe1 patch 8.1.2264: there are two test files for :let
Bram Moolenaar <Bram@vim.org>
parents: 18536
diff changeset
243 let &t_te = "\<Esc>[yes;"
f7bb0e413fe1 patch 8.1.2264: there are two test files for :let
Bram Moolenaar <Bram@vim.org>
parents: 18536
diff changeset
244 call assert_match('t_te.*^[[yes;', execute("set termcap"))
f7bb0e413fe1 patch 8.1.2264: there are two test files for :let
Bram Moolenaar <Bram@vim.org>
parents: 18536
diff changeset
245 let &t_te = old_t_te
f7bb0e413fe1 patch 8.1.2264: there are two test files for :let
Bram Moolenaar <Bram@vim.org>
parents: 18536
diff changeset
246
f7bb0e413fe1 patch 8.1.2264: there are two test files for :let
Bram Moolenaar <Bram@vim.org>
parents: 18536
diff changeset
247 if exists("+t_k1")
f7bb0e413fe1 patch 8.1.2264: there are two test files for :let
Bram Moolenaar <Bram@vim.org>
parents: 18536
diff changeset
248 " Key code
f7bb0e413fe1 patch 8.1.2264: there are two test files for :let
Bram Moolenaar <Bram@vim.org>
parents: 18536
diff changeset
249 let old_t_k1 = &t_k1
f7bb0e413fe1 patch 8.1.2264: there are two test files for :let
Bram Moolenaar <Bram@vim.org>
parents: 18536
diff changeset
250 let &t_k1 = "that"
f7bb0e413fe1 patch 8.1.2264: there are two test files for :let
Bram Moolenaar <Bram@vim.org>
parents: 18536
diff changeset
251 call assert_match('t_k1.*that', execute("set termcap"))
f7bb0e413fe1 patch 8.1.2264: there are two test files for :let
Bram Moolenaar <Bram@vim.org>
parents: 18536
diff changeset
252 let &t_k1 = old_t_k1
f7bb0e413fe1 patch 8.1.2264: there are two test files for :let
Bram Moolenaar <Bram@vim.org>
parents: 18536
diff changeset
253 endif
f7bb0e413fe1 patch 8.1.2264: there are two test files for :let
Bram Moolenaar <Bram@vim.org>
parents: 18536
diff changeset
254
22087
ff21e2962490 patch 8.2.1593: tests do not check the error number properly
Bram Moolenaar <Bram@vim.org>
parents: 21512
diff changeset
255 call assert_fails('let x = &t_xx', 'E113:')
18540
f7bb0e413fe1 patch 8.1.2264: there are two test files for :let
Bram Moolenaar <Bram@vim.org>
parents: 18536
diff changeset
256 let &t_xx = "yes"
f7bb0e413fe1 patch 8.1.2264: there are two test files for :let
Bram Moolenaar <Bram@vim.org>
parents: 18536
diff changeset
257 call assert_equal("yes", &t_xx)
f7bb0e413fe1 patch 8.1.2264: there are two test files for :let
Bram Moolenaar <Bram@vim.org>
parents: 18536
diff changeset
258 let &t_xx = ""
22087
ff21e2962490 patch 8.2.1593: tests do not check the error number properly
Bram Moolenaar <Bram@vim.org>
parents: 21512
diff changeset
259 call assert_fails('let x = &t_xx', 'E113:')
18540
f7bb0e413fe1 patch 8.1.2264: there are two test files for :let
Bram Moolenaar <Bram@vim.org>
parents: 18536
diff changeset
260 endfunc
f7bb0e413fe1 patch 8.1.2264: there are two test files for :let
Bram Moolenaar <Bram@vim.org>
parents: 18536
diff changeset
261
f7bb0e413fe1 patch 8.1.2264: there are two test files for :let
Bram Moolenaar <Bram@vim.org>
parents: 18536
diff changeset
262 func Test_let_option_error()
f7bb0e413fe1 patch 8.1.2264: there are two test files for :let
Bram Moolenaar <Bram@vim.org>
parents: 18536
diff changeset
263 let _w = &tw
f7bb0e413fe1 patch 8.1.2264: there are two test files for :let
Bram Moolenaar <Bram@vim.org>
parents: 18536
diff changeset
264 let &tw = 80
22087
ff21e2962490 patch 8.2.1593: tests do not check the error number properly
Bram Moolenaar <Bram@vim.org>
parents: 21512
diff changeset
265 call assert_fails('let &tw .= 1', 'E734:')
18540
f7bb0e413fe1 patch 8.1.2264: there are two test files for :let
Bram Moolenaar <Bram@vim.org>
parents: 18536
diff changeset
266 call assert_equal(80, &tw)
f7bb0e413fe1 patch 8.1.2264: there are two test files for :let
Bram Moolenaar <Bram@vim.org>
parents: 18536
diff changeset
267 let &tw = _w
f7bb0e413fe1 patch 8.1.2264: there are two test files for :let
Bram Moolenaar <Bram@vim.org>
parents: 18536
diff changeset
268
f7bb0e413fe1 patch 8.1.2264: there are two test files for :let
Bram Moolenaar <Bram@vim.org>
parents: 18536
diff changeset
269 let _w = &fillchars
f7bb0e413fe1 patch 8.1.2264: there are two test files for :let
Bram Moolenaar <Bram@vim.org>
parents: 18536
diff changeset
270 let &fillchars = "vert:|"
22087
ff21e2962490 patch 8.2.1593: tests do not check the error number properly
Bram Moolenaar <Bram@vim.org>
parents: 21512
diff changeset
271 call assert_fails('let &fillchars += "diff:-"', 'E734:')
18540
f7bb0e413fe1 patch 8.1.2264: there are two test files for :let
Bram Moolenaar <Bram@vim.org>
parents: 18536
diff changeset
272 call assert_equal("vert:|", &fillchars)
f7bb0e413fe1 patch 8.1.2264: there are two test files for :let
Bram Moolenaar <Bram@vim.org>
parents: 18536
diff changeset
273 let &fillchars = _w
f7bb0e413fe1 patch 8.1.2264: there are two test files for :let
Bram Moolenaar <Bram@vim.org>
parents: 18536
diff changeset
274 endfunc
f7bb0e413fe1 patch 8.1.2264: there are two test files for :let
Bram Moolenaar <Bram@vim.org>
parents: 18536
diff changeset
275
19689
da98d2ed8dc5 patch 8.2.0401: not enough test coverage for evalvars.c
Bram Moolenaar <Bram@vim.org>
parents: 18713
diff changeset
276 " Errors with the :let statement
18540
f7bb0e413fe1 patch 8.1.2264: there are two test files for :let
Bram Moolenaar <Bram@vim.org>
parents: 18536
diff changeset
277 func Test_let_errors()
f7bb0e413fe1 patch 8.1.2264: there are two test files for :let
Bram Moolenaar <Bram@vim.org>
parents: 18536
diff changeset
278 let s = 'abcd'
f7bb0e413fe1 patch 8.1.2264: there are two test files for :let
Bram Moolenaar <Bram@vim.org>
parents: 18536
diff changeset
279 call assert_fails('let s[1] = 5', 'E689:')
f7bb0e413fe1 patch 8.1.2264: there are two test files for :let
Bram Moolenaar <Bram@vim.org>
parents: 18536
diff changeset
280
f7bb0e413fe1 patch 8.1.2264: there are two test files for :let
Bram Moolenaar <Bram@vim.org>
parents: 18536
diff changeset
281 let l = [1, 2, 3]
f7bb0e413fe1 patch 8.1.2264: there are two test files for :let
Bram Moolenaar <Bram@vim.org>
parents: 18536
diff changeset
282 call assert_fails('let l[:] = 5', 'E709:')
19689
da98d2ed8dc5 patch 8.2.0401: not enough test coverage for evalvars.c
Bram Moolenaar <Bram@vim.org>
parents: 18713
diff changeset
283
25611
f142bfebaac1 patch 8.2.3342: test for :let errors fails
Bram Moolenaar <Bram@vim.org>
parents: 25036
diff changeset
284 call assert_fails('let x:lnum=5', ['E121:', 'E121:'])
19689
da98d2ed8dc5 patch 8.2.0401: not enough test coverage for evalvars.c
Bram Moolenaar <Bram@vim.org>
parents: 18713
diff changeset
285 call assert_fails('let v:=5', 'E461:')
da98d2ed8dc5 patch 8.2.0401: not enough test coverage for evalvars.c
Bram Moolenaar <Bram@vim.org>
parents: 18713
diff changeset
286 call assert_fails('let [a]', 'E474:')
da98d2ed8dc5 patch 8.2.0401: not enough test coverage for evalvars.c
Bram Moolenaar <Bram@vim.org>
parents: 18713
diff changeset
287 call assert_fails('let [a, b] = [', 'E697:')
da98d2ed8dc5 patch 8.2.0401: not enough test coverage for evalvars.c
Bram Moolenaar <Bram@vim.org>
parents: 18713
diff changeset
288 call assert_fails('let [a, b] = [10, 20', 'E696:')
da98d2ed8dc5 patch 8.2.0401: not enough test coverage for evalvars.c
Bram Moolenaar <Bram@vim.org>
parents: 18713
diff changeset
289 call assert_fails('let [a, b] = 10', 'E714:')
da98d2ed8dc5 patch 8.2.0401: not enough test coverage for evalvars.c
Bram Moolenaar <Bram@vim.org>
parents: 18713
diff changeset
290 call assert_fails('let [a, , b] = [10, 20]', 'E475:')
da98d2ed8dc5 patch 8.2.0401: not enough test coverage for evalvars.c
Bram Moolenaar <Bram@vim.org>
parents: 18713
diff changeset
291 call assert_fails('let [a, b&] = [10, 20]', 'E475:')
da98d2ed8dc5 patch 8.2.0401: not enough test coverage for evalvars.c
Bram Moolenaar <Bram@vim.org>
parents: 18713
diff changeset
292 call assert_fails('let $ = 10', 'E475:')
da98d2ed8dc5 patch 8.2.0401: not enough test coverage for evalvars.c
Bram Moolenaar <Bram@vim.org>
parents: 18713
diff changeset
293 call assert_fails('let $FOO[1] = "abc"', 'E18:')
da98d2ed8dc5 patch 8.2.0401: not enough test coverage for evalvars.c
Bram Moolenaar <Bram@vim.org>
parents: 18713
diff changeset
294 call assert_fails('let &buftype[1] = "nofile"', 'E18:')
da98d2ed8dc5 patch 8.2.0401: not enough test coverage for evalvars.c
Bram Moolenaar <Bram@vim.org>
parents: 18713
diff changeset
295 let s = "var"
da98d2ed8dc5 patch 8.2.0401: not enough test coverage for evalvars.c
Bram Moolenaar <Bram@vim.org>
parents: 18713
diff changeset
296 let var = 1
20128
0b35a7ffceb2 patch 8.2.0619: null dict is not handled like an empty dict
Bram Moolenaar <Bram@vim.org>
parents: 19724
diff changeset
297 call assert_fails('let var += [1,2]', 'E734:')
25036
3b8d3b383fd6 patch 8.2.3055: strange error for assigning to "x.key" on non-dictionary
Bram Moolenaar <Bram@vim.org>
parents: 24958
diff changeset
298 call assert_fails('let {s}.1 = 2', 'E1203:')
19724
b3e93a05c3ca patch 8.2.0418: code in eval.c not sufficiently covered by tests
Bram Moolenaar <Bram@vim.org>
parents: 19689
diff changeset
299 call assert_fails('let a[1] = 5', 'E121:')
b3e93a05c3ca patch 8.2.0418: code in eval.c not sufficiently covered by tests
Bram Moolenaar <Bram@vim.org>
parents: 19689
diff changeset
300 let l = [[1,2]]
b3e93a05c3ca patch 8.2.0418: code in eval.c not sufficiently covered by tests
Bram Moolenaar <Bram@vim.org>
parents: 19689
diff changeset
301 call assert_fails('let l[:][0] = [5]', 'E708:')
b3e93a05c3ca patch 8.2.0418: code in eval.c not sufficiently covered by tests
Bram Moolenaar <Bram@vim.org>
parents: 19689
diff changeset
302 let d = {'k' : 4}
21447
369cde0d5771 patch 8.2.1274: Vim9: no error for missing white space at script level
Bram Moolenaar <Bram@vim.org>
parents: 21265
diff changeset
303 call assert_fails('let d.# = 5', 'E488:')
24365
f2bd92589670 patch 8.2.2723: assignment test fails
Bram Moolenaar <Bram@vim.org>
parents: 23185
diff changeset
304 call assert_fails('let d.m += 5', 'E716:')
20156
49694eceaa55 patch 8.2.0633: crash when using null partial in filter()
Bram Moolenaar <Bram@vim.org>
parents: 20128
diff changeset
305 call assert_fails('let m = d[{]', 'E15:')
19724
b3e93a05c3ca patch 8.2.0418: code in eval.c not sufficiently covered by tests
Bram Moolenaar <Bram@vim.org>
parents: 19689
diff changeset
306 let l = [1, 2]
b3e93a05c3ca patch 8.2.0418: code in eval.c not sufficiently covered by tests
Bram Moolenaar <Bram@vim.org>
parents: 19689
diff changeset
307 call assert_fails('let l[2] = 0', 'E684:')
b3e93a05c3ca patch 8.2.0418: code in eval.c not sufficiently covered by tests
Bram Moolenaar <Bram@vim.org>
parents: 19689
diff changeset
308 call assert_fails('let l[0:1] = [1, 2, 3]', 'E710:')
b3e93a05c3ca patch 8.2.0418: code in eval.c not sufficiently covered by tests
Bram Moolenaar <Bram@vim.org>
parents: 19689
diff changeset
309 call assert_fails('let l[-2:-3] = [3, 4]', 'E684:')
b3e93a05c3ca patch 8.2.0418: code in eval.c not sufficiently covered by tests
Bram Moolenaar <Bram@vim.org>
parents: 19689
diff changeset
310 call assert_fails('let l[0:4] = [5, 6]', 'E711:')
20156
49694eceaa55 patch 8.2.0633: crash when using null partial in filter()
Bram Moolenaar <Bram@vim.org>
parents: 20128
diff changeset
311 call assert_fails('let l -= 2', 'E734:')
49694eceaa55 patch 8.2.0633: crash when using null partial in filter()
Bram Moolenaar <Bram@vim.org>
parents: 20128
diff changeset
312 call assert_fails('let l += 2', 'E734:')
20128
0b35a7ffceb2 patch 8.2.0619: null dict is not handled like an empty dict
Bram Moolenaar <Bram@vim.org>
parents: 19724
diff changeset
313 call assert_fails('let g:["a;b"] = 10', 'E461:')
0b35a7ffceb2 patch 8.2.0619: null dict is not handled like an empty dict
Bram Moolenaar <Bram@vim.org>
parents: 19724
diff changeset
314 call assert_fails('let g:.min = function("max")', 'E704:')
20156
49694eceaa55 patch 8.2.0633: crash when using null partial in filter()
Bram Moolenaar <Bram@vim.org>
parents: 20128
diff changeset
315 if has('channel')
49694eceaa55 patch 8.2.0633: crash when using null partial in filter()
Bram Moolenaar <Bram@vim.org>
parents: 20128
diff changeset
316 let ch = test_null_channel()
49694eceaa55 patch 8.2.0633: crash when using null partial in filter()
Bram Moolenaar <Bram@vim.org>
parents: 20128
diff changeset
317 call assert_fails('let ch += 1', 'E734:')
49694eceaa55 patch 8.2.0633: crash when using null partial in filter()
Bram Moolenaar <Bram@vim.org>
parents: 20128
diff changeset
318 endif
24958
21ec48d542a8 patch 8.2.3016: confusing error when expression is followed by comma
Bram Moolenaar <Bram@vim.org>
parents: 24365
diff changeset
319 call assert_fails('let name = "a" .. "b",', 'E488: Trailing characters: ,')
19689
da98d2ed8dc5 patch 8.2.0401: not enough test coverage for evalvars.c
Bram Moolenaar <Bram@vim.org>
parents: 18713
diff changeset
320
da98d2ed8dc5 patch 8.2.0401: not enough test coverage for evalvars.c
Bram Moolenaar <Bram@vim.org>
parents: 18713
diff changeset
321 " This test works only when the language is English
da98d2ed8dc5 patch 8.2.0401: not enough test coverage for evalvars.c
Bram Moolenaar <Bram@vim.org>
parents: 18713
diff changeset
322 if v:lang == "C" || v:lang =~ '^[Ee]n'
da98d2ed8dc5 patch 8.2.0401: not enough test coverage for evalvars.c
Bram Moolenaar <Bram@vim.org>
parents: 18713
diff changeset
323 call assert_fails('let [a ; b;] = [10, 20]',
da98d2ed8dc5 patch 8.2.0401: not enough test coverage for evalvars.c
Bram Moolenaar <Bram@vim.org>
parents: 18713
diff changeset
324 \ 'Double ; in list of variables')
da98d2ed8dc5 patch 8.2.0401: not enough test coverage for evalvars.c
Bram Moolenaar <Bram@vim.org>
parents: 18713
diff changeset
325 endif
18540
f7bb0e413fe1 patch 8.1.2264: there are two test files for :let
Bram Moolenaar <Bram@vim.org>
parents: 18536
diff changeset
326 endfunc
f7bb0e413fe1 patch 8.1.2264: there are two test files for :let
Bram Moolenaar <Bram@vim.org>
parents: 18536
diff changeset
327
16708
98393772bddd patch 8.1.1356: some text in heredoc assignment ends the text
Bram Moolenaar <Bram@vim.org>
parents: 16704
diff changeset
328 func Test_let_heredoc_fails()
98393772bddd patch 8.1.1356: some text in heredoc assignment ends the text
Bram Moolenaar <Bram@vim.org>
parents: 16704
diff changeset
329 call assert_fails('let v =<< marker', 'E991:')
19689
da98d2ed8dc5 patch 8.2.0401: not enough test coverage for evalvars.c
Bram Moolenaar <Bram@vim.org>
parents: 18713
diff changeset
330 try
da98d2ed8dc5 patch 8.2.0401: not enough test coverage for evalvars.c
Bram Moolenaar <Bram@vim.org>
parents: 18713
diff changeset
331 exe "let v =<< TEXT | abc | TEXT"
da98d2ed8dc5 patch 8.2.0401: not enough test coverage for evalvars.c
Bram Moolenaar <Bram@vim.org>
parents: 18713
diff changeset
332 call assert_report('No exception thrown')
da98d2ed8dc5 patch 8.2.0401: not enough test coverage for evalvars.c
Bram Moolenaar <Bram@vim.org>
parents: 18713
diff changeset
333 catch /E488:/
da98d2ed8dc5 patch 8.2.0401: not enough test coverage for evalvars.c
Bram Moolenaar <Bram@vim.org>
parents: 18713
diff changeset
334 catch
da98d2ed8dc5 patch 8.2.0401: not enough test coverage for evalvars.c
Bram Moolenaar <Bram@vim.org>
parents: 18713
diff changeset
335 call assert_report("Caught exception: " .. v:exception)
da98d2ed8dc5 patch 8.2.0401: not enough test coverage for evalvars.c
Bram Moolenaar <Bram@vim.org>
parents: 18713
diff changeset
336 endtry
16708
98393772bddd patch 8.1.1356: some text in heredoc assignment ends the text
Bram Moolenaar <Bram@vim.org>
parents: 16704
diff changeset
337
98393772bddd patch 8.1.1356: some text in heredoc assignment ends the text
Bram Moolenaar <Bram@vim.org>
parents: 16704
diff changeset
338 let text =<< trim END
98393772bddd patch 8.1.1356: some text in heredoc assignment ends the text
Bram Moolenaar <Bram@vim.org>
parents: 16704
diff changeset
339 func WrongSyntax()
98393772bddd patch 8.1.1356: some text in heredoc assignment ends the text
Bram Moolenaar <Bram@vim.org>
parents: 16704
diff changeset
340 let v =<< that there
98393772bddd patch 8.1.1356: some text in heredoc assignment ends the text
Bram Moolenaar <Bram@vim.org>
parents: 16704
diff changeset
341 endfunc
98393772bddd patch 8.1.1356: some text in heredoc assignment ends the text
Bram Moolenaar <Bram@vim.org>
parents: 16704
diff changeset
342 END
98393772bddd patch 8.1.1356: some text in heredoc assignment ends the text
Bram Moolenaar <Bram@vim.org>
parents: 16704
diff changeset
343 call writefile(text, 'XheredocFail')
23185
055fa9db6f39 patch 8.2.2138: Vim9: "exit_cb" causes Vim to exit
Bram Moolenaar <Bram@vim.org>
parents: 22087
diff changeset
344 call assert_fails('source XheredocFail', 'E1145:')
16708
98393772bddd patch 8.1.1356: some text in heredoc assignment ends the text
Bram Moolenaar <Bram@vim.org>
parents: 16704
diff changeset
345 call delete('XheredocFail')
98393772bddd patch 8.1.1356: some text in heredoc assignment ends the text
Bram Moolenaar <Bram@vim.org>
parents: 16704
diff changeset
346
17450
509542f1fffb patch 8.1.1723: heredoc assignment has no room for new features
Bram Moolenaar <Bram@vim.org>
parents: 17178
diff changeset
347 let text =<< trim CodeEnd
16708
98393772bddd patch 8.1.1356: some text in heredoc assignment ends the text
Bram Moolenaar <Bram@vim.org>
parents: 16704
diff changeset
348 func MissingEnd()
98393772bddd patch 8.1.1356: some text in heredoc assignment ends the text
Bram Moolenaar <Bram@vim.org>
parents: 16704
diff changeset
349 let v =<< END
98393772bddd patch 8.1.1356: some text in heredoc assignment ends the text
Bram Moolenaar <Bram@vim.org>
parents: 16704
diff changeset
350 endfunc
17450
509542f1fffb patch 8.1.1723: heredoc assignment has no room for new features
Bram Moolenaar <Bram@vim.org>
parents: 17178
diff changeset
351 CodeEnd
16708
98393772bddd patch 8.1.1356: some text in heredoc assignment ends the text
Bram Moolenaar <Bram@vim.org>
parents: 16704
diff changeset
352 call writefile(text, 'XheredocWrong')
23185
055fa9db6f39 patch 8.2.2138: Vim9: "exit_cb" causes Vim to exit
Bram Moolenaar <Bram@vim.org>
parents: 22087
diff changeset
353 call assert_fails('source XheredocWrong', 'E1145:')
16708
98393772bddd patch 8.1.1356: some text in heredoc assignment ends the text
Bram Moolenaar <Bram@vim.org>
parents: 16704
diff changeset
354 call delete('XheredocWrong')
17450
509542f1fffb patch 8.1.1723: heredoc assignment has no room for new features
Bram Moolenaar <Bram@vim.org>
parents: 17178
diff changeset
355
509542f1fffb patch 8.1.1723: heredoc assignment has no room for new features
Bram Moolenaar <Bram@vim.org>
parents: 17178
diff changeset
356 let text =<< trim TEXTend
509542f1fffb patch 8.1.1723: heredoc assignment has no room for new features
Bram Moolenaar <Bram@vim.org>
parents: 17178
diff changeset
357 let v =<< " comment
509542f1fffb patch 8.1.1723: heredoc assignment has no room for new features
Bram Moolenaar <Bram@vim.org>
parents: 17178
diff changeset
358 TEXTend
509542f1fffb patch 8.1.1723: heredoc assignment has no room for new features
Bram Moolenaar <Bram@vim.org>
parents: 17178
diff changeset
359 call writefile(text, 'XheredocNoMarker')
509542f1fffb patch 8.1.1723: heredoc assignment has no room for new features
Bram Moolenaar <Bram@vim.org>
parents: 17178
diff changeset
360 call assert_fails('source XheredocNoMarker', 'E172:')
509542f1fffb patch 8.1.1723: heredoc assignment has no room for new features
Bram Moolenaar <Bram@vim.org>
parents: 17178
diff changeset
361 call delete('XheredocNoMarker')
509542f1fffb patch 8.1.1723: heredoc assignment has no room for new features
Bram Moolenaar <Bram@vim.org>
parents: 17178
diff changeset
362
509542f1fffb patch 8.1.1723: heredoc assignment has no room for new features
Bram Moolenaar <Bram@vim.org>
parents: 17178
diff changeset
363 let text =<< trim TEXTend
509542f1fffb patch 8.1.1723: heredoc assignment has no room for new features
Bram Moolenaar <Bram@vim.org>
parents: 17178
diff changeset
364 let v =<< text
509542f1fffb patch 8.1.1723: heredoc assignment has no room for new features
Bram Moolenaar <Bram@vim.org>
parents: 17178
diff changeset
365 TEXTend
509542f1fffb patch 8.1.1723: heredoc assignment has no room for new features
Bram Moolenaar <Bram@vim.org>
parents: 17178
diff changeset
366 call writefile(text, 'XheredocBadMarker')
509542f1fffb patch 8.1.1723: heredoc assignment has no room for new features
Bram Moolenaar <Bram@vim.org>
parents: 17178
diff changeset
367 call assert_fails('source XheredocBadMarker', 'E221:')
509542f1fffb patch 8.1.1723: heredoc assignment has no room for new features
Bram Moolenaar <Bram@vim.org>
parents: 17178
diff changeset
368 call delete('XheredocBadMarker')
19689
da98d2ed8dc5 patch 8.2.0401: not enough test coverage for evalvars.c
Bram Moolenaar <Bram@vim.org>
parents: 18713
diff changeset
369
da98d2ed8dc5 patch 8.2.0401: not enough test coverage for evalvars.c
Bram Moolenaar <Bram@vim.org>
parents: 18713
diff changeset
370 call writefile(['let v =<< TEXT', 'abc'], 'XheredocMissingMarker')
da98d2ed8dc5 patch 8.2.0401: not enough test coverage for evalvars.c
Bram Moolenaar <Bram@vim.org>
parents: 18713
diff changeset
371 call assert_fails('source XheredocMissingMarker', 'E990:')
da98d2ed8dc5 patch 8.2.0401: not enough test coverage for evalvars.c
Bram Moolenaar <Bram@vim.org>
parents: 18713
diff changeset
372 call delete('XheredocMissingMarker')
16708
98393772bddd patch 8.1.1356: some text in heredoc assignment ends the text
Bram Moolenaar <Bram@vim.org>
parents: 16704
diff changeset
373 endfunc
98393772bddd patch 8.1.1356: some text in heredoc assignment ends the text
Bram Moolenaar <Bram@vim.org>
parents: 16704
diff changeset
374
17462
9088fafff9b3 patch 8.1.1729: heredoc with trim not properly handled in function
Bram Moolenaar <Bram@vim.org>
parents: 17450
diff changeset
375 func Test_let_heredoc_trim_no_indent_marker()
9088fafff9b3 patch 8.1.1729: heredoc with trim not properly handled in function
Bram Moolenaar <Bram@vim.org>
parents: 17450
diff changeset
376 let text =<< trim END
9088fafff9b3 patch 8.1.1729: heredoc with trim not properly handled in function
Bram Moolenaar <Bram@vim.org>
parents: 17450
diff changeset
377 Text
9088fafff9b3 patch 8.1.1729: heredoc with trim not properly handled in function
Bram Moolenaar <Bram@vim.org>
parents: 17450
diff changeset
378 with
9088fafff9b3 patch 8.1.1729: heredoc with trim not properly handled in function
Bram Moolenaar <Bram@vim.org>
parents: 17450
diff changeset
379 indent
9088fafff9b3 patch 8.1.1729: heredoc with trim not properly handled in function
Bram Moolenaar <Bram@vim.org>
parents: 17450
diff changeset
380 END
9088fafff9b3 patch 8.1.1729: heredoc with trim not properly handled in function
Bram Moolenaar <Bram@vim.org>
parents: 17450
diff changeset
381 call assert_equal(['Text', 'with', 'indent'], text)
9088fafff9b3 patch 8.1.1729: heredoc with trim not properly handled in function
Bram Moolenaar <Bram@vim.org>
parents: 17450
diff changeset
382 endfunc
9088fafff9b3 patch 8.1.1729: heredoc with trim not properly handled in function
Bram Moolenaar <Bram@vim.org>
parents: 17450
diff changeset
383
28718
723c7d940cba patch 8.2.4883: string interpolation only works in heredoc
Bram Moolenaar <Bram@vim.org>
parents: 28633
diff changeset
384 func Test_let_interpolated()
723c7d940cba patch 8.2.4883: string interpolation only works in heredoc
Bram Moolenaar <Bram@vim.org>
parents: 28633
diff changeset
385 call assert_equal('{text}', $'{{text}}')
723c7d940cba patch 8.2.4883: string interpolation only works in heredoc
Bram Moolenaar <Bram@vim.org>
parents: 28633
diff changeset
386 call assert_equal('{{text}}', $'{{{{text}}}}')
723c7d940cba patch 8.2.4883: string interpolation only works in heredoc
Bram Moolenaar <Bram@vim.org>
parents: 28633
diff changeset
387 let text = 'text'
723c7d940cba patch 8.2.4883: string interpolation only works in heredoc
Bram Moolenaar <Bram@vim.org>
parents: 28633
diff changeset
388 call assert_equal('text{{', $'{text .. "{{"}')
723c7d940cba patch 8.2.4883: string interpolation only works in heredoc
Bram Moolenaar <Bram@vim.org>
parents: 28633
diff changeset
389 call assert_equal('text{{', $"{text .. '{{'}")
28813
3626ca6a20ea patch 8.2.4930: interpolated string expression requires escaping
Bram Moolenaar <Bram@vim.org>
parents: 28718
diff changeset
390 call assert_equal('text{{', $'{text .. '{{'}')
3626ca6a20ea patch 8.2.4930: interpolated string expression requires escaping
Bram Moolenaar <Bram@vim.org>
parents: 28718
diff changeset
391 call assert_equal('text{{', $"{text .. "{{"}")
28718
723c7d940cba patch 8.2.4883: string interpolation only works in heredoc
Bram Moolenaar <Bram@vim.org>
parents: 28633
diff changeset
392 endfunc
723c7d940cba patch 8.2.4883: string interpolation only works in heredoc
Bram Moolenaar <Bram@vim.org>
parents: 28633
diff changeset
393
28491
769599ee9f06 patch 8.2.4770: cannot easily mix expression and heredoc
Bram Moolenaar <Bram@vim.org>
parents: 25611
diff changeset
394 " Test for the setting a variable using the heredoc syntax.
769599ee9f06 patch 8.2.4770: cannot easily mix expression and heredoc
Bram Moolenaar <Bram@vim.org>
parents: 25611
diff changeset
395 " Keep near the end, this messes up highlighting.
16704
a927fdf9a4b0 patch 8.1.1354: getting a list of text lines is clumsy
Bram Moolenaar <Bram@vim.org>
parents: 16172
diff changeset
396 func Test_let_heredoc()
a927fdf9a4b0 patch 8.1.1354: getting a list of text lines is clumsy
Bram Moolenaar <Bram@vim.org>
parents: 16172
diff changeset
397 let var1 =<< END
a927fdf9a4b0 patch 8.1.1354: getting a list of text lines is clumsy
Bram Moolenaar <Bram@vim.org>
parents: 16172
diff changeset
398 Some sample text
a927fdf9a4b0 patch 8.1.1354: getting a list of text lines is clumsy
Bram Moolenaar <Bram@vim.org>
parents: 16172
diff changeset
399 Text with indent
a927fdf9a4b0 patch 8.1.1354: getting a list of text lines is clumsy
Bram Moolenaar <Bram@vim.org>
parents: 16172
diff changeset
400 !@#$%^&*()-+_={}|[]\~`:";'<>?,./
a927fdf9a4b0 patch 8.1.1354: getting a list of text lines is clumsy
Bram Moolenaar <Bram@vim.org>
parents: 16172
diff changeset
401 END
a927fdf9a4b0 patch 8.1.1354: getting a list of text lines is clumsy
Bram Moolenaar <Bram@vim.org>
parents: 16172
diff changeset
402
a927fdf9a4b0 patch 8.1.1354: getting a list of text lines is clumsy
Bram Moolenaar <Bram@vim.org>
parents: 16172
diff changeset
403 call assert_equal(["Some sample text", "\tText with indent", " !@#$%^&*()-+_={}|[]\\~`:\";'<>?,./"], var1)
a927fdf9a4b0 patch 8.1.1354: getting a list of text lines is clumsy
Bram Moolenaar <Bram@vim.org>
parents: 16172
diff changeset
404
17450
509542f1fffb patch 8.1.1723: heredoc assignment has no room for new features
Bram Moolenaar <Bram@vim.org>
parents: 17178
diff changeset
405 let var2 =<< XXX
16704
a927fdf9a4b0 patch 8.1.1354: getting a list of text lines is clumsy
Bram Moolenaar <Bram@vim.org>
parents: 16172
diff changeset
406 Editor
17450
509542f1fffb patch 8.1.1723: heredoc assignment has no room for new features
Bram Moolenaar <Bram@vim.org>
parents: 17178
diff changeset
407 XXX
16704
a927fdf9a4b0 patch 8.1.1354: getting a list of text lines is clumsy
Bram Moolenaar <Bram@vim.org>
parents: 16172
diff changeset
408 call assert_equal(['Editor'], var2)
a927fdf9a4b0 patch 8.1.1354: getting a list of text lines is clumsy
Bram Moolenaar <Bram@vim.org>
parents: 16172
diff changeset
409
a927fdf9a4b0 patch 8.1.1354: getting a list of text lines is clumsy
Bram Moolenaar <Bram@vim.org>
parents: 16172
diff changeset
410 let var3 =<<END
a927fdf9a4b0 patch 8.1.1354: getting a list of text lines is clumsy
Bram Moolenaar <Bram@vim.org>
parents: 16172
diff changeset
411 END
a927fdf9a4b0 patch 8.1.1354: getting a list of text lines is clumsy
Bram Moolenaar <Bram@vim.org>
parents: 16172
diff changeset
412 call assert_equal([], var3)
a927fdf9a4b0 patch 8.1.1354: getting a list of text lines is clumsy
Bram Moolenaar <Bram@vim.org>
parents: 16172
diff changeset
413
a927fdf9a4b0 patch 8.1.1354: getting a list of text lines is clumsy
Bram Moolenaar <Bram@vim.org>
parents: 16172
diff changeset
414 let var3 =<<END
a927fdf9a4b0 patch 8.1.1354: getting a list of text lines is clumsy
Bram Moolenaar <Bram@vim.org>
parents: 16172
diff changeset
415 vim
a927fdf9a4b0 patch 8.1.1354: getting a list of text lines is clumsy
Bram Moolenaar <Bram@vim.org>
parents: 16172
diff changeset
416
a927fdf9a4b0 patch 8.1.1354: getting a list of text lines is clumsy
Bram Moolenaar <Bram@vim.org>
parents: 16172
diff changeset
417 end
a927fdf9a4b0 patch 8.1.1354: getting a list of text lines is clumsy
Bram Moolenaar <Bram@vim.org>
parents: 16172
diff changeset
418 END
a927fdf9a4b0 patch 8.1.1354: getting a list of text lines is clumsy
Bram Moolenaar <Bram@vim.org>
parents: 16172
diff changeset
419 END
a927fdf9a4b0 patch 8.1.1354: getting a list of text lines is clumsy
Bram Moolenaar <Bram@vim.org>
parents: 16172
diff changeset
420 END
a927fdf9a4b0 patch 8.1.1354: getting a list of text lines is clumsy
Bram Moolenaar <Bram@vim.org>
parents: 16172
diff changeset
421 call assert_equal(['vim', '', 'end', ' END', 'END '], var3)
a927fdf9a4b0 patch 8.1.1354: getting a list of text lines is clumsy
Bram Moolenaar <Bram@vim.org>
parents: 16172
diff changeset
422
a927fdf9a4b0 patch 8.1.1354: getting a list of text lines is clumsy
Bram Moolenaar <Bram@vim.org>
parents: 16172
diff changeset
423 let var1 =<< trim END
a927fdf9a4b0 patch 8.1.1354: getting a list of text lines is clumsy
Bram Moolenaar <Bram@vim.org>
parents: 16172
diff changeset
424 Line1
a927fdf9a4b0 patch 8.1.1354: getting a list of text lines is clumsy
Bram Moolenaar <Bram@vim.org>
parents: 16172
diff changeset
425 Line2
a927fdf9a4b0 patch 8.1.1354: getting a list of text lines is clumsy
Bram Moolenaar <Bram@vim.org>
parents: 16172
diff changeset
426 Line3
a927fdf9a4b0 patch 8.1.1354: getting a list of text lines is clumsy
Bram Moolenaar <Bram@vim.org>
parents: 16172
diff changeset
427 END
a927fdf9a4b0 patch 8.1.1354: getting a list of text lines is clumsy
Bram Moolenaar <Bram@vim.org>
parents: 16172
diff changeset
428 END
a927fdf9a4b0 patch 8.1.1354: getting a list of text lines is clumsy
Bram Moolenaar <Bram@vim.org>
parents: 16172
diff changeset
429 call assert_equal(['Line1', ' Line2', "\tLine3", ' END'], var1)
a927fdf9a4b0 patch 8.1.1354: getting a list of text lines is clumsy
Bram Moolenaar <Bram@vim.org>
parents: 16172
diff changeset
430
17172
6990c1160ea5 patch 8.1.1585: :let-heredoc does not trim enough
Bram Moolenaar <Bram@vim.org>
parents: 16708
diff changeset
431 let var1 =<< trim !!!
6990c1160ea5 patch 8.1.1585: :let-heredoc does not trim enough
Bram Moolenaar <Bram@vim.org>
parents: 16708
diff changeset
432 Line1
6990c1160ea5 patch 8.1.1585: :let-heredoc does not trim enough
Bram Moolenaar <Bram@vim.org>
parents: 16708
diff changeset
433 line2
6990c1160ea5 patch 8.1.1585: :let-heredoc does not trim enough
Bram Moolenaar <Bram@vim.org>
parents: 16708
diff changeset
434 Line3
6990c1160ea5 patch 8.1.1585: :let-heredoc does not trim enough
Bram Moolenaar <Bram@vim.org>
parents: 16708
diff changeset
435 !!!
6990c1160ea5 patch 8.1.1585: :let-heredoc does not trim enough
Bram Moolenaar <Bram@vim.org>
parents: 16708
diff changeset
436 !!!
6990c1160ea5 patch 8.1.1585: :let-heredoc does not trim enough
Bram Moolenaar <Bram@vim.org>
parents: 16708
diff changeset
437 call assert_equal(['Line1', ' line2', "\tLine3", '!!!',], var1)
6990c1160ea5 patch 8.1.1585: :let-heredoc does not trim enough
Bram Moolenaar <Bram@vim.org>
parents: 16708
diff changeset
438
17450
509542f1fffb patch 8.1.1723: heredoc assignment has no room for new features
Bram Moolenaar <Bram@vim.org>
parents: 17178
diff changeset
439 let var1 =<< trim XX
16704
a927fdf9a4b0 patch 8.1.1354: getting a list of text lines is clumsy
Bram Moolenaar <Bram@vim.org>
parents: 16172
diff changeset
440 Line1
17450
509542f1fffb patch 8.1.1723: heredoc assignment has no room for new features
Bram Moolenaar <Bram@vim.org>
parents: 17178
diff changeset
441 XX
17172
6990c1160ea5 patch 8.1.1585: :let-heredoc does not trim enough
Bram Moolenaar <Bram@vim.org>
parents: 16708
diff changeset
442 call assert_equal(['Line1'], var1)
16704
a927fdf9a4b0 patch 8.1.1354: getting a list of text lines is clumsy
Bram Moolenaar <Bram@vim.org>
parents: 16172
diff changeset
443
16708
98393772bddd patch 8.1.1356: some text in heredoc assignment ends the text
Bram Moolenaar <Bram@vim.org>
parents: 16704
diff changeset
444 " ignore "endfunc"
98393772bddd patch 8.1.1356: some text in heredoc assignment ends the text
Bram Moolenaar <Bram@vim.org>
parents: 16704
diff changeset
445 let var1 =<< END
98393772bddd patch 8.1.1356: some text in heredoc assignment ends the text
Bram Moolenaar <Bram@vim.org>
parents: 16704
diff changeset
446 something
16704
a927fdf9a4b0 patch 8.1.1354: getting a list of text lines is clumsy
Bram Moolenaar <Bram@vim.org>
parents: 16172
diff changeset
447 endfunc
16708
98393772bddd patch 8.1.1356: some text in heredoc assignment ends the text
Bram Moolenaar <Bram@vim.org>
parents: 16704
diff changeset
448 END
98393772bddd patch 8.1.1356: some text in heredoc assignment ends the text
Bram Moolenaar <Bram@vim.org>
parents: 16704
diff changeset
449 call assert_equal(['something', 'endfunc'], var1)
98393772bddd patch 8.1.1356: some text in heredoc assignment ends the text
Bram Moolenaar <Bram@vim.org>
parents: 16704
diff changeset
450
98393772bddd patch 8.1.1356: some text in heredoc assignment ends the text
Bram Moolenaar <Bram@vim.org>
parents: 16704
diff changeset
451 " ignore "endfunc" with trim
98393772bddd patch 8.1.1356: some text in heredoc assignment ends the text
Bram Moolenaar <Bram@vim.org>
parents: 16704
diff changeset
452 let var1 =<< trim END
98393772bddd patch 8.1.1356: some text in heredoc assignment ends the text
Bram Moolenaar <Bram@vim.org>
parents: 16704
diff changeset
453 something
98393772bddd patch 8.1.1356: some text in heredoc assignment ends the text
Bram Moolenaar <Bram@vim.org>
parents: 16704
diff changeset
454 endfunc
98393772bddd patch 8.1.1356: some text in heredoc assignment ends the text
Bram Moolenaar <Bram@vim.org>
parents: 16704
diff changeset
455 END
98393772bddd patch 8.1.1356: some text in heredoc assignment ends the text
Bram Moolenaar <Bram@vim.org>
parents: 16704
diff changeset
456 call assert_equal(['something', 'endfunc'], var1)
98393772bddd patch 8.1.1356: some text in heredoc assignment ends the text
Bram Moolenaar <Bram@vim.org>
parents: 16704
diff changeset
457
17178
40c4cb095d53 patch 8.1.1588: in :let-heredoc line continuation is recognized
Bram Moolenaar <Bram@vim.org>
parents: 17172
diff changeset
458 " not concatenate lines
40c4cb095d53 patch 8.1.1588: in :let-heredoc line continuation is recognized
Bram Moolenaar <Bram@vim.org>
parents: 17172
diff changeset
459 let var1 =<< END
40c4cb095d53 patch 8.1.1588: in :let-heredoc line continuation is recognized
Bram Moolenaar <Bram@vim.org>
parents: 17172
diff changeset
460 some
40c4cb095d53 patch 8.1.1588: in :let-heredoc line continuation is recognized
Bram Moolenaar <Bram@vim.org>
parents: 17172
diff changeset
461 \thing
40c4cb095d53 patch 8.1.1588: in :let-heredoc line continuation is recognized
Bram Moolenaar <Bram@vim.org>
parents: 17172
diff changeset
462 \ else
40c4cb095d53 patch 8.1.1588: in :let-heredoc line continuation is recognized
Bram Moolenaar <Bram@vim.org>
parents: 17172
diff changeset
463 END
40c4cb095d53 patch 8.1.1588: in :let-heredoc line continuation is recognized
Bram Moolenaar <Bram@vim.org>
parents: 17172
diff changeset
464 call assert_equal(['some', ' \thing', ' \ else'], var1)
40c4cb095d53 patch 8.1.1588: in :let-heredoc line continuation is recognized
Bram Moolenaar <Bram@vim.org>
parents: 17172
diff changeset
465
16708
98393772bddd patch 8.1.1356: some text in heredoc assignment ends the text
Bram Moolenaar <Bram@vim.org>
parents: 16704
diff changeset
466 " ignore "python << xx"
98393772bddd patch 8.1.1356: some text in heredoc assignment ends the text
Bram Moolenaar <Bram@vim.org>
parents: 16704
diff changeset
467 let var1 =<<END
98393772bddd patch 8.1.1356: some text in heredoc assignment ends the text
Bram Moolenaar <Bram@vim.org>
parents: 16704
diff changeset
468 something
98393772bddd patch 8.1.1356: some text in heredoc assignment ends the text
Bram Moolenaar <Bram@vim.org>
parents: 16704
diff changeset
469 python << xx
98393772bddd patch 8.1.1356: some text in heredoc assignment ends the text
Bram Moolenaar <Bram@vim.org>
parents: 16704
diff changeset
470 END
98393772bddd patch 8.1.1356: some text in heredoc assignment ends the text
Bram Moolenaar <Bram@vim.org>
parents: 16704
diff changeset
471 call assert_equal(['something', 'python << xx'], var1)
16704
a927fdf9a4b0 patch 8.1.1354: getting a list of text lines is clumsy
Bram Moolenaar <Bram@vim.org>
parents: 16172
diff changeset
472
16708
98393772bddd patch 8.1.1356: some text in heredoc assignment ends the text
Bram Moolenaar <Bram@vim.org>
parents: 16704
diff changeset
473 " ignore "python << xx" with trim
98393772bddd patch 8.1.1356: some text in heredoc assignment ends the text
Bram Moolenaar <Bram@vim.org>
parents: 16704
diff changeset
474 let var1 =<< trim END
98393772bddd patch 8.1.1356: some text in heredoc assignment ends the text
Bram Moolenaar <Bram@vim.org>
parents: 16704
diff changeset
475 something
98393772bddd patch 8.1.1356: some text in heredoc assignment ends the text
Bram Moolenaar <Bram@vim.org>
parents: 16704
diff changeset
476 python << xx
98393772bddd patch 8.1.1356: some text in heredoc assignment ends the text
Bram Moolenaar <Bram@vim.org>
parents: 16704
diff changeset
477 END
98393772bddd patch 8.1.1356: some text in heredoc assignment ends the text
Bram Moolenaar <Bram@vim.org>
parents: 16704
diff changeset
478 call assert_equal(['something', 'python << xx'], var1)
16704
a927fdf9a4b0 patch 8.1.1354: getting a list of text lines is clumsy
Bram Moolenaar <Bram@vim.org>
parents: 16172
diff changeset
479
16708
98393772bddd patch 8.1.1356: some text in heredoc assignment ends the text
Bram Moolenaar <Bram@vim.org>
parents: 16704
diff changeset
480 " ignore "append"
17450
509542f1fffb patch 8.1.1723: heredoc assignment has no room for new features
Bram Moolenaar <Bram@vim.org>
parents: 17178
diff changeset
481 let var1 =<< E
16708
98393772bddd patch 8.1.1356: some text in heredoc assignment ends the text
Bram Moolenaar <Bram@vim.org>
parents: 16704
diff changeset
482 something
98393772bddd patch 8.1.1356: some text in heredoc assignment ends the text
Bram Moolenaar <Bram@vim.org>
parents: 16704
diff changeset
483 app
17450
509542f1fffb patch 8.1.1723: heredoc assignment has no room for new features
Bram Moolenaar <Bram@vim.org>
parents: 17178
diff changeset
484 E
16708
98393772bddd patch 8.1.1356: some text in heredoc assignment ends the text
Bram Moolenaar <Bram@vim.org>
parents: 16704
diff changeset
485 call assert_equal(['something', 'app'], var1)
98393772bddd patch 8.1.1356: some text in heredoc assignment ends the text
Bram Moolenaar <Bram@vim.org>
parents: 16704
diff changeset
486
98393772bddd patch 8.1.1356: some text in heredoc assignment ends the text
Bram Moolenaar <Bram@vim.org>
parents: 16704
diff changeset
487 " ignore "append" with trim
17450
509542f1fffb patch 8.1.1723: heredoc assignment has no room for new features
Bram Moolenaar <Bram@vim.org>
parents: 17178
diff changeset
488 let var1 =<< trim END
16708
98393772bddd patch 8.1.1356: some text in heredoc assignment ends the text
Bram Moolenaar <Bram@vim.org>
parents: 16704
diff changeset
489 something
98393772bddd patch 8.1.1356: some text in heredoc assignment ends the text
Bram Moolenaar <Bram@vim.org>
parents: 16704
diff changeset
490 app
17450
509542f1fffb patch 8.1.1723: heredoc assignment has no room for new features
Bram Moolenaar <Bram@vim.org>
parents: 17178
diff changeset
491 END
16708
98393772bddd patch 8.1.1356: some text in heredoc assignment ends the text
Bram Moolenaar <Bram@vim.org>
parents: 16704
diff changeset
492 call assert_equal(['something', 'app'], var1)
18348
9ea364ccf216 patch 8.1.2168: heredoc assignment not skipped in if block
Bram Moolenaar <Bram@vim.org>
parents: 17462
diff changeset
493
9ea364ccf216 patch 8.1.2168: heredoc assignment not skipped in if block
Bram Moolenaar <Bram@vim.org>
parents: 17462
diff changeset
494 let check = []
9ea364ccf216 patch 8.1.2168: heredoc assignment not skipped in if block
Bram Moolenaar <Bram@vim.org>
parents: 17462
diff changeset
495 if 0
9ea364ccf216 patch 8.1.2168: heredoc assignment not skipped in if block
Bram Moolenaar <Bram@vim.org>
parents: 17462
diff changeset
496 let check =<< trim END
9ea364ccf216 patch 8.1.2168: heredoc assignment not skipped in if block
Bram Moolenaar <Bram@vim.org>
parents: 17462
diff changeset
497 from heredoc
9ea364ccf216 patch 8.1.2168: heredoc assignment not skipped in if block
Bram Moolenaar <Bram@vim.org>
parents: 17462
diff changeset
498 END
9ea364ccf216 patch 8.1.2168: heredoc assignment not skipped in if block
Bram Moolenaar <Bram@vim.org>
parents: 17462
diff changeset
499 endif
9ea364ccf216 patch 8.1.2168: heredoc assignment not skipped in if block
Bram Moolenaar <Bram@vim.org>
parents: 17462
diff changeset
500 call assert_equal([], check)
18536
c0cd979000f9 patch 8.1.2262: unpack assignment in function not recognized
Bram Moolenaar <Bram@vim.org>
parents: 18348
diff changeset
501
c0cd979000f9 patch 8.1.2262: unpack assignment in function not recognized
Bram Moolenaar <Bram@vim.org>
parents: 18348
diff changeset
502 " unpack assignment
c0cd979000f9 patch 8.1.2262: unpack assignment in function not recognized
Bram Moolenaar <Bram@vim.org>
parents: 18348
diff changeset
503 let [a, b, c] =<< END
c0cd979000f9 patch 8.1.2262: unpack assignment in function not recognized
Bram Moolenaar <Bram@vim.org>
parents: 18348
diff changeset
504 x
c0cd979000f9 patch 8.1.2262: unpack assignment in function not recognized
Bram Moolenaar <Bram@vim.org>
parents: 18348
diff changeset
505 \y
c0cd979000f9 patch 8.1.2262: unpack assignment in function not recognized
Bram Moolenaar <Bram@vim.org>
parents: 18348
diff changeset
506 z
c0cd979000f9 patch 8.1.2262: unpack assignment in function not recognized
Bram Moolenaar <Bram@vim.org>
parents: 18348
diff changeset
507 END
c0cd979000f9 patch 8.1.2262: unpack assignment in function not recognized
Bram Moolenaar <Bram@vim.org>
parents: 18348
diff changeset
508 call assert_equal([' x', ' \y', ' z'], [a, b, c])
16704
a927fdf9a4b0 patch 8.1.1354: getting a list of text lines is clumsy
Bram Moolenaar <Bram@vim.org>
parents: 16172
diff changeset
509 endfunc
19689
da98d2ed8dc5 patch 8.2.0401: not enough test coverage for evalvars.c
Bram Moolenaar <Bram@vim.org>
parents: 18713
diff changeset
510
28718
723c7d940cba patch 8.2.4883: string interpolation only works in heredoc
Bram Moolenaar <Bram@vim.org>
parents: 28633
diff changeset
511 " Test for evaluating Vim expressions in a heredoc using {expr}
28491
769599ee9f06 patch 8.2.4770: cannot easily mix expression and heredoc
Bram Moolenaar <Bram@vim.org>
parents: 25611
diff changeset
512 " Keep near the end, this messes up highlighting.
769599ee9f06 patch 8.2.4770: cannot easily mix expression and heredoc
Bram Moolenaar <Bram@vim.org>
parents: 25611
diff changeset
513 func Test_let_heredoc_eval()
769599ee9f06 patch 8.2.4770: cannot easily mix expression and heredoc
Bram Moolenaar <Bram@vim.org>
parents: 25611
diff changeset
514 let str = ''
769599ee9f06 patch 8.2.4770: cannot easily mix expression and heredoc
Bram Moolenaar <Bram@vim.org>
parents: 25611
diff changeset
515 let code =<< trim eval END
28718
723c7d940cba patch 8.2.4883: string interpolation only works in heredoc
Bram Moolenaar <Bram@vim.org>
parents: 28633
diff changeset
516 let a = {5 + 10}
723c7d940cba patch 8.2.4883: string interpolation only works in heredoc
Bram Moolenaar <Bram@vim.org>
parents: 28633
diff changeset
517 let b = {min([10, 6])} + {max([4, 6])}
723c7d940cba patch 8.2.4883: string interpolation only works in heredoc
Bram Moolenaar <Bram@vim.org>
parents: 28633
diff changeset
518 {str}
723c7d940cba patch 8.2.4883: string interpolation only works in heredoc
Bram Moolenaar <Bram@vim.org>
parents: 28633
diff changeset
519 let c = "abc{str}d"
28491
769599ee9f06 patch 8.2.4770: cannot easily mix expression and heredoc
Bram Moolenaar <Bram@vim.org>
parents: 25611
diff changeset
520 END
769599ee9f06 patch 8.2.4770: cannot easily mix expression and heredoc
Bram Moolenaar <Bram@vim.org>
parents: 25611
diff changeset
521 call assert_equal(['let a = 15', 'let b = 6 + 6', '', 'let c = "abcd"'], code)
28633
7a39c20a42fa patch 8.2.4840: heredoc expression evaluated even when skipping
Bram Moolenaar <Bram@vim.org>
parents: 28491
diff changeset
522
28491
769599ee9f06 patch 8.2.4770: cannot easily mix expression and heredoc
Bram Moolenaar <Bram@vim.org>
parents: 25611
diff changeset
523 let $TESTVAR = "Hello"
769599ee9f06 patch 8.2.4770: cannot easily mix expression and heredoc
Bram Moolenaar <Bram@vim.org>
parents: 25611
diff changeset
524 let code =<< eval trim END
28718
723c7d940cba patch 8.2.4883: string interpolation only works in heredoc
Bram Moolenaar <Bram@vim.org>
parents: 28633
diff changeset
525 let s = "{$TESTVAR}"
28491
769599ee9f06 patch 8.2.4770: cannot easily mix expression and heredoc
Bram Moolenaar <Bram@vim.org>
parents: 25611
diff changeset
526 END
769599ee9f06 patch 8.2.4770: cannot easily mix expression and heredoc
Bram Moolenaar <Bram@vim.org>
parents: 25611
diff changeset
527 call assert_equal(['let s = "Hello"'], code)
28633
7a39c20a42fa patch 8.2.4840: heredoc expression evaluated even when skipping
Bram Moolenaar <Bram@vim.org>
parents: 28491
diff changeset
528
28491
769599ee9f06 patch 8.2.4770: cannot easily mix expression and heredoc
Bram Moolenaar <Bram@vim.org>
parents: 25611
diff changeset
529 let code =<< eval END
28718
723c7d940cba patch 8.2.4883: string interpolation only works in heredoc
Bram Moolenaar <Bram@vim.org>
parents: 28633
diff changeset
530 let s = "{$TESTVAR}"
28491
769599ee9f06 patch 8.2.4770: cannot easily mix expression and heredoc
Bram Moolenaar <Bram@vim.org>
parents: 25611
diff changeset
531 END
769599ee9f06 patch 8.2.4770: cannot easily mix expression and heredoc
Bram Moolenaar <Bram@vim.org>
parents: 25611
diff changeset
532 call assert_equal([' let s = "Hello"'], code)
28633
7a39c20a42fa patch 8.2.4840: heredoc expression evaluated even when skipping
Bram Moolenaar <Bram@vim.org>
parents: 28491
diff changeset
533
28491
769599ee9f06 patch 8.2.4770: cannot easily mix expression and heredoc
Bram Moolenaar <Bram@vim.org>
parents: 25611
diff changeset
534 let a = 10
769599ee9f06 patch 8.2.4770: cannot easily mix expression and heredoc
Bram Moolenaar <Bram@vim.org>
parents: 25611
diff changeset
535 let data =<< eval END
28718
723c7d940cba patch 8.2.4883: string interpolation only works in heredoc
Bram Moolenaar <Bram@vim.org>
parents: 28633
diff changeset
536 {a}
28491
769599ee9f06 patch 8.2.4770: cannot easily mix expression and heredoc
Bram Moolenaar <Bram@vim.org>
parents: 25611
diff changeset
537 END
769599ee9f06 patch 8.2.4770: cannot easily mix expression and heredoc
Bram Moolenaar <Bram@vim.org>
parents: 25611
diff changeset
538 call assert_equal(['10'], data)
28633
7a39c20a42fa patch 8.2.4840: heredoc expression evaluated even when skipping
Bram Moolenaar <Bram@vim.org>
parents: 28491
diff changeset
539
28491
769599ee9f06 patch 8.2.4770: cannot easily mix expression and heredoc
Bram Moolenaar <Bram@vim.org>
parents: 25611
diff changeset
540 let x = 'X'
769599ee9f06 patch 8.2.4770: cannot easily mix expression and heredoc
Bram Moolenaar <Bram@vim.org>
parents: 25611
diff changeset
541 let code =<< eval trim END
28718
723c7d940cba patch 8.2.4883: string interpolation only works in heredoc
Bram Moolenaar <Bram@vim.org>
parents: 28633
diff changeset
542 let a = {{abc}}
723c7d940cba patch 8.2.4883: string interpolation only works in heredoc
Bram Moolenaar <Bram@vim.org>
parents: 28633
diff changeset
543 let b = {x}
723c7d940cba patch 8.2.4883: string interpolation only works in heredoc
Bram Moolenaar <Bram@vim.org>
parents: 28633
diff changeset
544 let c = {{
28491
769599ee9f06 patch 8.2.4770: cannot easily mix expression and heredoc
Bram Moolenaar <Bram@vim.org>
parents: 25611
diff changeset
545 END
28718
723c7d940cba patch 8.2.4883: string interpolation only works in heredoc
Bram Moolenaar <Bram@vim.org>
parents: 28633
diff changeset
546 call assert_equal(['let a = {abc}', 'let b = X', 'let c = {'], code)
28633
7a39c20a42fa patch 8.2.4840: heredoc expression evaluated even when skipping
Bram Moolenaar <Bram@vim.org>
parents: 28491
diff changeset
547
28491
769599ee9f06 patch 8.2.4770: cannot easily mix expression and heredoc
Bram Moolenaar <Bram@vim.org>
parents: 25611
diff changeset
548 let code = 'xxx'
769599ee9f06 patch 8.2.4770: cannot easily mix expression and heredoc
Bram Moolenaar <Bram@vim.org>
parents: 25611
diff changeset
549 let code =<< eval trim END
28718
723c7d940cba patch 8.2.4883: string interpolation only works in heredoc
Bram Moolenaar <Bram@vim.org>
parents: 28633
diff changeset
550 let n = {5 +
723c7d940cba patch 8.2.4883: string interpolation only works in heredoc
Bram Moolenaar <Bram@vim.org>
parents: 28633
diff changeset
551 6}
28491
769599ee9f06 patch 8.2.4770: cannot easily mix expression and heredoc
Bram Moolenaar <Bram@vim.org>
parents: 25611
diff changeset
552 END
769599ee9f06 patch 8.2.4770: cannot easily mix expression and heredoc
Bram Moolenaar <Bram@vim.org>
parents: 25611
diff changeset
553 call assert_equal('xxx', code)
28633
7a39c20a42fa patch 8.2.4840: heredoc expression evaluated even when skipping
Bram Moolenaar <Bram@vim.org>
parents: 28491
diff changeset
554
28491
769599ee9f06 patch 8.2.4770: cannot easily mix expression and heredoc
Bram Moolenaar <Bram@vim.org>
parents: 25611
diff changeset
555 let code =<< eval trim END
28718
723c7d940cba patch 8.2.4883: string interpolation only works in heredoc
Bram Moolenaar <Bram@vim.org>
parents: 28633
diff changeset
556 let n = {min([1, 2]} + {max([3, 4])}
28491
769599ee9f06 patch 8.2.4770: cannot easily mix expression and heredoc
Bram Moolenaar <Bram@vim.org>
parents: 25611
diff changeset
557 END
769599ee9f06 patch 8.2.4770: cannot easily mix expression and heredoc
Bram Moolenaar <Bram@vim.org>
parents: 25611
diff changeset
558 call assert_equal('xxx', code)
769599ee9f06 patch 8.2.4770: cannot easily mix expression and heredoc
Bram Moolenaar <Bram@vim.org>
parents: 25611
diff changeset
559
769599ee9f06 patch 8.2.4770: cannot easily mix expression and heredoc
Bram Moolenaar <Bram@vim.org>
parents: 25611
diff changeset
560 let lines =<< trim LINES
769599ee9f06 patch 8.2.4770: cannot easily mix expression and heredoc
Bram Moolenaar <Bram@vim.org>
parents: 25611
diff changeset
561 let text =<< eval trim END
28718
723c7d940cba patch 8.2.4883: string interpolation only works in heredoc
Bram Moolenaar <Bram@vim.org>
parents: 28633
diff changeset
562 let b = {
28491
769599ee9f06 patch 8.2.4770: cannot easily mix expression and heredoc
Bram Moolenaar <Bram@vim.org>
parents: 25611
diff changeset
563 END
769599ee9f06 patch 8.2.4770: cannot easily mix expression and heredoc
Bram Moolenaar <Bram@vim.org>
parents: 25611
diff changeset
564 LINES
28718
723c7d940cba patch 8.2.4883: string interpolation only works in heredoc
Bram Moolenaar <Bram@vim.org>
parents: 28633
diff changeset
565 call v9.CheckScriptFailure(lines, 'E1279:')
28491
769599ee9f06 patch 8.2.4770: cannot easily mix expression and heredoc
Bram Moolenaar <Bram@vim.org>
parents: 25611
diff changeset
566
769599ee9f06 patch 8.2.4770: cannot easily mix expression and heredoc
Bram Moolenaar <Bram@vim.org>
parents: 25611
diff changeset
567 let lines =<< trim LINES
769599ee9f06 patch 8.2.4770: cannot easily mix expression and heredoc
Bram Moolenaar <Bram@vim.org>
parents: 25611
diff changeset
568 let text =<< eval trim END
28718
723c7d940cba patch 8.2.4883: string interpolation only works in heredoc
Bram Moolenaar <Bram@vim.org>
parents: 28633
diff changeset
569 let b = {abc
28491
769599ee9f06 patch 8.2.4770: cannot easily mix expression and heredoc
Bram Moolenaar <Bram@vim.org>
parents: 25611
diff changeset
570 END
769599ee9f06 patch 8.2.4770: cannot easily mix expression and heredoc
Bram Moolenaar <Bram@vim.org>
parents: 25611
diff changeset
571 LINES
28718
723c7d940cba patch 8.2.4883: string interpolation only works in heredoc
Bram Moolenaar <Bram@vim.org>
parents: 28633
diff changeset
572 call v9.CheckScriptFailure(lines, 'E1279:')
28491
769599ee9f06 patch 8.2.4770: cannot easily mix expression and heredoc
Bram Moolenaar <Bram@vim.org>
parents: 25611
diff changeset
573
769599ee9f06 patch 8.2.4770: cannot easily mix expression and heredoc
Bram Moolenaar <Bram@vim.org>
parents: 25611
diff changeset
574 let lines =<< trim LINES
769599ee9f06 patch 8.2.4770: cannot easily mix expression and heredoc
Bram Moolenaar <Bram@vim.org>
parents: 25611
diff changeset
575 let text =<< eval trim END
28718
723c7d940cba patch 8.2.4883: string interpolation only works in heredoc
Bram Moolenaar <Bram@vim.org>
parents: 28633
diff changeset
576 let b = {}
28491
769599ee9f06 patch 8.2.4770: cannot easily mix expression and heredoc
Bram Moolenaar <Bram@vim.org>
parents: 25611
diff changeset
577 END
769599ee9f06 patch 8.2.4770: cannot easily mix expression and heredoc
Bram Moolenaar <Bram@vim.org>
parents: 25611
diff changeset
578 LINES
769599ee9f06 patch 8.2.4770: cannot easily mix expression and heredoc
Bram Moolenaar <Bram@vim.org>
parents: 25611
diff changeset
579 call v9.CheckScriptFailure(lines, 'E15:')
769599ee9f06 patch 8.2.4770: cannot easily mix expression and heredoc
Bram Moolenaar <Bram@vim.org>
parents: 25611
diff changeset
580
28633
7a39c20a42fa patch 8.2.4840: heredoc expression evaluated even when skipping
Bram Moolenaar <Bram@vim.org>
parents: 28491
diff changeset
581 " skipped heredoc
7a39c20a42fa patch 8.2.4840: heredoc expression evaluated even when skipping
Bram Moolenaar <Bram@vim.org>
parents: 28491
diff changeset
582 if 0
7a39c20a42fa patch 8.2.4840: heredoc expression evaluated even when skipping
Bram Moolenaar <Bram@vim.org>
parents: 28491
diff changeset
583 let msg =<< trim eval END
28718
723c7d940cba patch 8.2.4883: string interpolation only works in heredoc
Bram Moolenaar <Bram@vim.org>
parents: 28633
diff changeset
584 n is: {n}
28633
7a39c20a42fa patch 8.2.4840: heredoc expression evaluated even when skipping
Bram Moolenaar <Bram@vim.org>
parents: 28491
diff changeset
585 END
7a39c20a42fa patch 8.2.4840: heredoc expression evaluated even when skipping
Bram Moolenaar <Bram@vim.org>
parents: 28491
diff changeset
586 endif
7a39c20a42fa patch 8.2.4840: heredoc expression evaluated even when skipping
Bram Moolenaar <Bram@vim.org>
parents: 28491
diff changeset
587
28491
769599ee9f06 patch 8.2.4770: cannot easily mix expression and heredoc
Bram Moolenaar <Bram@vim.org>
parents: 25611
diff changeset
588 " Test for sourcing a script containing a heredoc with invalid expression.
769599ee9f06 patch 8.2.4770: cannot easily mix expression and heredoc
Bram Moolenaar <Bram@vim.org>
parents: 25611
diff changeset
589 " Variable assignment should fail, if expression evaluation fails
769599ee9f06 patch 8.2.4770: cannot easily mix expression and heredoc
Bram Moolenaar <Bram@vim.org>
parents: 25611
diff changeset
590 new
769599ee9f06 patch 8.2.4770: cannot easily mix expression and heredoc
Bram Moolenaar <Bram@vim.org>
parents: 25611
diff changeset
591 let g:Xvar = 'test'
769599ee9f06 patch 8.2.4770: cannot easily mix expression and heredoc
Bram Moolenaar <Bram@vim.org>
parents: 25611
diff changeset
592 let g:b = 10
769599ee9f06 patch 8.2.4770: cannot easily mix expression and heredoc
Bram Moolenaar <Bram@vim.org>
parents: 25611
diff changeset
593 let lines =<< trim END
769599ee9f06 patch 8.2.4770: cannot easily mix expression and heredoc
Bram Moolenaar <Bram@vim.org>
parents: 25611
diff changeset
594 let Xvar =<< eval CODE
769599ee9f06 patch 8.2.4770: cannot easily mix expression and heredoc
Bram Moolenaar <Bram@vim.org>
parents: 25611
diff changeset
595 let a = 1
28718
723c7d940cba patch 8.2.4883: string interpolation only works in heredoc
Bram Moolenaar <Bram@vim.org>
parents: 28633
diff changeset
596 let b = {5+}
28491
769599ee9f06 patch 8.2.4770: cannot easily mix expression and heredoc
Bram Moolenaar <Bram@vim.org>
parents: 25611
diff changeset
597 let c = 2
769599ee9f06 patch 8.2.4770: cannot easily mix expression and heredoc
Bram Moolenaar <Bram@vim.org>
parents: 25611
diff changeset
598 CODE
769599ee9f06 patch 8.2.4770: cannot easily mix expression and heredoc
Bram Moolenaar <Bram@vim.org>
parents: 25611
diff changeset
599 let g:Count += 1
769599ee9f06 patch 8.2.4770: cannot easily mix expression and heredoc
Bram Moolenaar <Bram@vim.org>
parents: 25611
diff changeset
600 END
769599ee9f06 patch 8.2.4770: cannot easily mix expression and heredoc
Bram Moolenaar <Bram@vim.org>
parents: 25611
diff changeset
601 call setline(1, lines)
769599ee9f06 patch 8.2.4770: cannot easily mix expression and heredoc
Bram Moolenaar <Bram@vim.org>
parents: 25611
diff changeset
602 let g:Count = 0
769599ee9f06 patch 8.2.4770: cannot easily mix expression and heredoc
Bram Moolenaar <Bram@vim.org>
parents: 25611
diff changeset
603 call assert_fails('source', 'E15:')
769599ee9f06 patch 8.2.4770: cannot easily mix expression and heredoc
Bram Moolenaar <Bram@vim.org>
parents: 25611
diff changeset
604 call assert_equal(1, g:Count)
28718
723c7d940cba patch 8.2.4883: string interpolation only works in heredoc
Bram Moolenaar <Bram@vim.org>
parents: 28633
diff changeset
605 call setline(3, 'let b = {abc}')
28491
769599ee9f06 patch 8.2.4770: cannot easily mix expression and heredoc
Bram Moolenaar <Bram@vim.org>
parents: 25611
diff changeset
606 call assert_fails('source', 'E121:')
769599ee9f06 patch 8.2.4770: cannot easily mix expression and heredoc
Bram Moolenaar <Bram@vim.org>
parents: 25611
diff changeset
607 call assert_equal(2, g:Count)
28718
723c7d940cba patch 8.2.4883: string interpolation only works in heredoc
Bram Moolenaar <Bram@vim.org>
parents: 28633
diff changeset
608 call setline(3, 'let b = {abc} + {min([9, 4])} + 2')
28491
769599ee9f06 patch 8.2.4770: cannot easily mix expression and heredoc
Bram Moolenaar <Bram@vim.org>
parents: 25611
diff changeset
609 call assert_fails('source', 'E121:')
769599ee9f06 patch 8.2.4770: cannot easily mix expression and heredoc
Bram Moolenaar <Bram@vim.org>
parents: 25611
diff changeset
610 call assert_equal(3, g:Count)
769599ee9f06 patch 8.2.4770: cannot easily mix expression and heredoc
Bram Moolenaar <Bram@vim.org>
parents: 25611
diff changeset
611 call assert_equal('test', g:Xvar)
769599ee9f06 patch 8.2.4770: cannot easily mix expression and heredoc
Bram Moolenaar <Bram@vim.org>
parents: 25611
diff changeset
612 call assert_equal(10, g:b)
769599ee9f06 patch 8.2.4770: cannot easily mix expression and heredoc
Bram Moolenaar <Bram@vim.org>
parents: 25611
diff changeset
613 bw!
769599ee9f06 patch 8.2.4770: cannot easily mix expression and heredoc
Bram Moolenaar <Bram@vim.org>
parents: 25611
diff changeset
614 endfunc
769599ee9f06 patch 8.2.4770: cannot easily mix expression and heredoc
Bram Moolenaar <Bram@vim.org>
parents: 25611
diff changeset
615
19689
da98d2ed8dc5 patch 8.2.0401: not enough test coverage for evalvars.c
Bram Moolenaar <Bram@vim.org>
parents: 18713
diff changeset
616 " vim: shiftwidth=2 sts=2 expandtab