Mercurial > vim
comparison src/testdir/test_profile.vim @ 23723:14e92f4c98c9 v8.2.2403
patch 8.2.2403: Vim9: profiling if/elseif/endif not correct
Commit: https://github.com/vim/vim/commit/ced68a0070dac059fc978a1a99e2893edf158116
Author: Bram Moolenaar <Bram@vim.org>
Date: Sun Jan 24 17:53:47 2021 +0100
patch 8.2.2403: Vim9: profiling if/elseif/endif not correct
Problem: Vim9: profiling if/elseif/endif not correct.
Solution: Add profile instructions. Fix that "elseif" was wrong.
author | Bram Moolenaar <Bram@vim.org> |
---|---|
date | Sun, 24 Jan 2021 18:00:04 +0100 |
parents | e3720756acdc |
children | f98692ae09a0 |
comparison
equal
deleted
inserted
replaced
23722:a889925d20fd | 23723:14e92f4c98c9 |
---|---|
98 call delete('Xprofile_func.vim') | 98 call delete('Xprofile_func.vim') |
99 call delete('Xprofile_func.log') | 99 call delete('Xprofile_func.log') |
100 endfunc | 100 endfunc |
101 | 101 |
102 func Test_profile_func_with_ifelse() | 102 func Test_profile_func_with_ifelse() |
103 call Run_profile_func_with_ifelse('func', 'let', 'let') | |
104 call Run_profile_func_with_ifelse('def', 'var', '') | |
105 endfunc | |
106 | |
107 func Run_profile_func_with_ifelse(command, declare, assign) | |
103 let lines =<< trim [CODE] | 108 let lines =<< trim [CODE] |
104 func! Foo1() | 109 XXX Foo1() |
105 if 1 | 110 if 1 |
106 let x = 0 | 111 DDD x = 0 |
107 elseif 1 | 112 elseif 1 |
108 let x = 1 | 113 DDD x = 1 |
109 else | 114 else |
110 let x = 2 | 115 DDD x = 2 |
111 endif | 116 endif |
112 endfunc | 117 endXXX |
113 func! Foo2() | 118 XXX Foo2() |
114 if 0 | 119 if 0 |
115 let x = 0 | 120 DDD x = 0 |
116 elseif 1 | 121 elseif 1 |
117 let x = 1 | 122 DDD x = 1 |
118 else | 123 else |
119 let x = 2 | 124 DDD x = 2 |
120 endif | 125 endif |
121 endfunc | 126 endXXX |
122 func! Foo3() | 127 XXX Foo3() |
123 if 0 | 128 if 0 |
124 let x = 0 | 129 DDD x = 0 |
125 elseif 0 | 130 elseif 0 |
126 let x = 1 | 131 DDD x = 1 |
127 else | 132 else |
128 let x = 2 | 133 DDD x = 2 |
129 endif | 134 endif |
130 endfunc | 135 endXXX |
131 call Foo1() | 136 call Foo1() |
132 call Foo2() | 137 call Foo2() |
133 call Foo3() | 138 call Foo3() |
134 [CODE] | 139 [CODE] |
140 | |
141 call map(lines, {k, v -> substitute(v, 'XXX', a:command, '') }) | |
142 call map(lines, {k, v -> substitute(v, 'DDD', a:declare, '') }) | |
143 call map(lines, {k, v -> substitute(v, 'AAA', a:assign, '') }) | |
135 | 144 |
136 call writefile(lines, 'Xprofile_func.vim') | 145 call writefile(lines, 'Xprofile_func.vim') |
137 call system(GetVimCommand() | 146 call system(GetVimCommand() |
138 \ . ' -es -i NONE --noplugin' | 147 \ . ' -es -i NONE --noplugin' |
139 \ . ' -c "profile start Xprofile_func.log"' | 148 \ . ' -c "profile start Xprofile_func.log"' |
155 call assert_match('^Total time:\s\+\d\+\.\d\+$', lines[3]) | 164 call assert_match('^Total time:\s\+\d\+\.\d\+$', lines[3]) |
156 call assert_match('^ Self time:\s\+\d\+\.\d\+$', lines[4]) | 165 call assert_match('^ Self time:\s\+\d\+\.\d\+$', lines[4]) |
157 call assert_equal('', lines[5]) | 166 call assert_equal('', lines[5]) |
158 call assert_equal('count total (s) self (s)', lines[6]) | 167 call assert_equal('count total (s) self (s)', lines[6]) |
159 call assert_match('^\s*1\s\+.*\sif 1$', lines[7]) | 168 call assert_match('^\s*1\s\+.*\sif 1$', lines[7]) |
160 call assert_match('^\s*1\s\+.*\s let x = 0$', lines[8]) | 169 call assert_match('^\s*1\s\+.*\s \(let\|var\) x = 0$', lines[8]) |
161 call assert_match( '^\s\+elseif 1$', lines[9]) | 170 call assert_match( '^\s\+elseif 1$', lines[9]) |
162 call assert_match( '^\s\+let x = 1$', lines[10]) | 171 call assert_match( '^\s\+\(let\|var\) x = 1$', lines[10]) |
163 call assert_match( '^\s\+else$', lines[11]) | 172 call assert_match( '^\s\+else$', lines[11]) |
164 call assert_match( '^\s\+let x = 2$', lines[12]) | 173 call assert_match( '^\s\+\(let\|var\) x = 2$', lines[12]) |
165 call assert_match('^\s*1\s\+.*\sendif$', lines[13]) | 174 call assert_match('^\s*1\s\+.*\sendif$', lines[13]) |
166 call assert_equal('', lines[14]) | 175 call assert_equal('', lines[14]) |
167 call assert_equal('FUNCTION Foo2()', lines[15]) | 176 call assert_equal('FUNCTION Foo2()', lines[15]) |
168 call assert_equal('Called 1 time', lines[17]) | 177 call assert_equal('Called 1 time', lines[17]) |
169 call assert_match('^Total time:\s\+\d\+\.\d\+$', lines[18]) | 178 call assert_match('^Total time:\s\+\d\+\.\d\+$', lines[18]) |
170 call assert_match('^ Self time:\s\+\d\+\.\d\+$', lines[19]) | 179 call assert_match('^ Self time:\s\+\d\+\.\d\+$', lines[19]) |
171 call assert_equal('', lines[20]) | 180 call assert_equal('', lines[20]) |
172 call assert_equal('count total (s) self (s)', lines[21]) | 181 call assert_equal('count total (s) self (s)', lines[21]) |
173 call assert_match('^\s*1\s\+.*\sif 0$', lines[22]) | 182 call assert_match('^\s*1\s\+.*\sif 0$', lines[22]) |
174 call assert_match( '^\s\+let x = 0$', lines[23]) | 183 call assert_match( '^\s\+\(let\|var\) x = 0$', lines[23]) |
175 call assert_match('^\s*1\s\+.*\selseif 1$', lines[24]) | 184 call assert_match('^\s*1\s\+.*\selseif 1$', lines[24]) |
176 call assert_match('^\s*1\s\+.*\s let x = 1$', lines[25]) | 185 call assert_match('^\s*1\s\+.*\s \(let\|var\) x = 1$', lines[25]) |
177 call assert_match( '^\s\+else$', lines[26]) | 186 call assert_match( '^\s\+else$', lines[26]) |
178 call assert_match( '^\s\+let x = 2$', lines[27]) | 187 call assert_match( '^\s\+\(let\|var\) x = 2$', lines[27]) |
179 call assert_match('^\s*1\s\+.*\sendif$', lines[28]) | 188 call assert_match('^\s*1\s\+.*\sendif$', lines[28]) |
180 call assert_equal('', lines[29]) | 189 call assert_equal('', lines[29]) |
181 call assert_equal('FUNCTION Foo3()', lines[30]) | 190 call assert_equal('FUNCTION Foo3()', lines[30]) |
182 call assert_equal('Called 1 time', lines[32]) | 191 call assert_equal('Called 1 time', lines[32]) |
183 call assert_match('^Total time:\s\+\d\+\.\d\+$', lines[33]) | 192 call assert_match('^Total time:\s\+\d\+\.\d\+$', lines[33]) |
184 call assert_match('^ Self time:\s\+\d\+\.\d\+$', lines[34]) | 193 call assert_match('^ Self time:\s\+\d\+\.\d\+$', lines[34]) |
185 call assert_equal('', lines[35]) | 194 call assert_equal('', lines[35]) |
186 call assert_equal('count total (s) self (s)', lines[36]) | 195 call assert_equal('count total (s) self (s)', lines[36]) |
187 call assert_match('^\s*1\s\+.*\sif 0$', lines[37]) | 196 call assert_match('^\s*1\s\+.*\sif 0$', lines[37]) |
188 call assert_match( '^\s\+let x = 0$', lines[38]) | 197 call assert_match( '^\s\+\(let\|var\) x = 0$', lines[38]) |
189 call assert_match('^\s*1\s\+.*\selseif 0$', lines[39]) | 198 call assert_match('^\s*1\s\+.*\selseif 0$', lines[39]) |
190 call assert_match( '^\s\+let x = 1$', lines[40]) | 199 call assert_match( '^\s\+\(let\|var\) x = 1$', lines[40]) |
191 call assert_match('^\s*1\s\+.*\selse$', lines[41]) | 200 call assert_match('^\s*1\s\+.*\selse$', lines[41]) |
192 call assert_match('^\s*1\s\+.*\s let x = 2$', lines[42]) | 201 call assert_match('^\s*1\s\+.*\s \(let\|var\) x = 2$', lines[42]) |
193 call assert_match('^\s*1\s\+.*\sendif$', lines[43]) | 202 call assert_match('^\s*1\s\+.*\sendif$', lines[43]) |
194 call assert_equal('', lines[44]) | 203 call assert_equal('', lines[44]) |
195 call assert_equal('FUNCTIONS SORTED ON TOTAL TIME', lines[45]) | 204 call assert_equal('FUNCTIONS SORTED ON TOTAL TIME', lines[45]) |
196 call assert_equal('count total (s) self (s) function', lines[46]) | 205 call assert_equal('count total (s) self (s) function', lines[46]) |
197 call assert_match('^\s*1\s\+\d\+\.\d\+\s\+Foo.()$', lines[47]) | 206 call assert_match('^\s*1\s\+\d\+\.\d\+\s\+Foo.()$', lines[47]) |