Mercurial > vim
comparison src/testdir/test_let.vim @ 15762:dff66c4670b1 v8.1.0888
patch 8.1.0888: the a: dict is not immutable as documented
commit https://github.com/vim/vim/commit/31b816042fca879b11965ddd75287732563ba698
Author: Bram Moolenaar <Bram@vim.org>
Date: Sun Feb 10 22:14:27 2019 +0100
patch 8.1.0888: the a: dict is not immutable as documented
Problem: The a: dict is not immutable as documented.
Solution: Make the a:dict immutable, add a test. (Ozaki Kiichi, Yasuhiro
Matsumoto, closes #3929)
author | Bram Moolenaar <Bram@vim.org> |
---|---|
date | Sun, 10 Feb 2019 22:15:05 +0100 |
parents | 0240e7e3d736 |
children | 5b6c3c7feba8 |
comparison
equal
deleted
inserted
replaced
15761:e2d967c0caf5 | 15762:dff66c4670b1 |
---|---|
23 | 23 |
24 let out = execute('let a {0 == 1 ? "a" : "b"}') | 24 let out = execute('let a {0 == 1 ? "a" : "b"}') |
25 let s = "\na #1\nb #2" | 25 let s = "\na #1\nb #2" |
26 call assert_equal(s, out) | 26 call assert_equal(s, out) |
27 endfunc | 27 endfunc |
28 | |
29 func s:set_arg1(a) abort | |
30 let a:a = 1 | |
31 endfunction | |
32 | |
33 func s:set_arg2(a) abort | |
34 let a:b = 1 | |
35 endfunction | |
36 | |
37 func s:set_arg3(a) abort | |
38 let b = a: | |
39 let b['a'] = 1 | |
40 endfunction | |
41 | |
42 func s:set_arg4(a) abort | |
43 let b = a: | |
44 let b['a'] = 1 | |
45 endfunction | |
46 | |
47 func s:set_arg5(a) abort | |
48 let b = a: | |
49 let b['a'][0] = 1 | |
50 endfunction | |
51 | |
52 func s:set_arg6(a) abort | |
53 let a:a[0] = 1 | |
54 endfunction | |
55 | |
56 func s:set_arg7(a) abort | |
57 call extend(a:, {'a': 1}) | |
58 endfunction | |
59 | |
60 func s:set_arg8(a) abort | |
61 call extend(a:, {'b': 1}) | |
62 endfunction | |
63 | |
64 func s:set_arg9(a) abort | |
65 let a:['b'] = 1 | |
66 endfunction | |
67 | |
68 func s:set_arg10(a) abort | |
69 let b = a: | |
70 call extend(b, {'a': 1}) | |
71 endfunction | |
72 | |
73 func s:set_arg11(a) abort | |
74 let b = a: | |
75 call extend(b, {'b': 1}) | |
76 endfunction | |
77 | |
78 func s:set_arg12(a) abort | |
79 let b = a: | |
80 let b['b'] = 1 | |
81 endfunction | |
82 | |
83 func Test_let_arg_fail() | |
84 call assert_fails('call s:set_arg1(1)', 'E46:') | |
85 call assert_fails('call s:set_arg2(1)', 'E461:') | |
86 call assert_fails('call s:set_arg3(1)', 'E46:') | |
87 call assert_fails('call s:set_arg4(1)', 'E46:') | |
88 call assert_fails('call s:set_arg5(1)', 'E46:') | |
89 call s:set_arg6([0]) | |
90 call assert_fails('call s:set_arg7(1)', 'E742:') | |
91 call assert_fails('call s:set_arg8(1)', 'E742:') | |
92 call assert_fails('call s:set_arg9(1)', 'E461:') | |
93 call assert_fails('call s:set_arg10(1)', 'E742:') | |
94 call assert_fails('call s:set_arg11(1)', 'E742:') | |
95 call assert_fails('call s:set_arg12(1)', 'E461:') | |
96 endfunction | |
97 | |
98 func s:set_varg1(...) abort | |
99 let a:000 = [] | |
100 endfunction | |
101 | |
102 func s:set_varg2(...) abort | |
103 let a:000[0] = 1 | |
104 endfunction | |
105 | |
106 func s:set_varg3(...) abort | |
107 let a:000 += [1] | |
108 endfunction | |
109 | |
110 func s:set_varg4(...) abort | |
111 call add(a:000, 1) | |
112 endfunction | |
113 | |
114 func s:set_varg5(...) abort | |
115 let a:000[0][0] = 1 | |
116 endfunction | |
117 | |
118 func s:set_varg6(...) abort | |
119 let b = a:000 | |
120 let b[0] = 1 | |
121 endfunction | |
122 | |
123 func s:set_varg7(...) abort | |
124 let b = a:000 | |
125 let b += [1] | |
126 endfunction | |
127 | |
128 func s:set_varg8(...) abort | |
129 let b = a:000 | |
130 call add(b, 1) | |
131 endfunction | |
132 | |
133 func s:set_varg9(...) abort | |
134 let b = a:000 | |
135 let b[0][0] = 1 | |
136 endfunction | |
137 | |
138 func Test_let_varg_fail() | |
139 call assert_fails('call s:set_varg1(1)', 'E46:') | |
140 call assert_fails('call s:set_varg2(1)', 'E742:') | |
141 call assert_fails('call s:set_varg3(1)', 'E46:') | |
142 call assert_fails('call s:set_varg4(1)', 'E742:') | |
143 call s:set_varg5([0]) | |
144 call assert_fails('call s:set_varg6(1)', 'E742:') | |
145 " call assert_fails('call s:set_varg7(1)', 'E46:') | |
146 call assert_fails('call s:set_varg8(1)', 'E742:') | |
147 call s:set_varg9([0]) | |
148 endfunction |