summaryrefslogtreecommitdiff
path: root/data/vim/patches/8.1.0309
diff options
context:
space:
mode:
Diffstat (limited to 'data/vim/patches/8.1.0309')
-rw-r--r--data/vim/patches/8.1.0309395
1 files changed, 395 insertions, 0 deletions
diff --git a/data/vim/patches/8.1.0309 b/data/vim/patches/8.1.0309
new file mode 100644
index 000000000..a4a36b0ae
--- /dev/null
+++ b/data/vim/patches/8.1.0309
@@ -0,0 +1,395 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 8.1.0309
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 8.1.0309
+Problem: Profiling does not show a count for condition lines. (Daniel
+ Hahler)
+Solution: Count lines when not skipping. (Ozaki Kiichi, closes #2499)
+Files: src/ex_docmd.c, src/testdir/test_profile.vim
+
+
+*** ../vim-8.1.0308/src/ex_docmd.c 2018-08-21 15:12:10.839801647 +0200
+--- src/ex_docmd.c 2018-08-21 17:40:31.920546399 +0200
+***************
+*** 1766,1782 ****
+ ea.skip = (if_level > 0);
+ #endif
+
+ #ifdef FEAT_EVAL
+ # ifdef FEAT_PROFILE
+! /* Count this line for profiling if ea.skip is FALSE. */
+! if (do_profiling == PROF_YES && !ea.skip)
+ {
+! if (getline_equal(fgetline, cookie, get_func_line))
+! func_line_exec(getline_cookie(fgetline, cookie));
+! else if (getline_equal(fgetline, cookie, getsourceline))
+! script_line_exec();
+ }
+! #endif
+
+ /* May go to debug mode. If this happens and the ">quit" debug command is
+ * used, throw an interrupt exception and skip the next command. */
+--- 1766,1816 ----
+ ea.skip = (if_level > 0);
+ #endif
+
++ /*
++ * 3. Skip over the range to find the command. Let "p" point to after it.
++ *
++ * We need the command to know what kind of range it uses.
++ */
++ cmd = ea.cmd;
++ ea.cmd = skip_range(ea.cmd, NULL);
++ if (*ea.cmd == '*' && vim_strchr(p_cpo, CPO_STAR) == NULL)
++ ea.cmd = skipwhite(ea.cmd + 1);
++ p = find_command(&ea, NULL);
++
+ #ifdef FEAT_EVAL
+ # ifdef FEAT_PROFILE
+! // Count this line for profiling if skip is TRUE.
+! if (do_profiling == PROF_YES
+! && (!ea.skip || cstack->cs_idx == 0 || (cstack->cs_idx > 0
+! && (cstack->cs_flags[cstack->cs_idx - 1] & CSF_ACTIVE))))
+ {
+! int skip = did_emsg || got_int || did_throw;
+!
+! if (ea.cmdidx == CMD_catch)
+! skip = !skip && !(cstack->cs_idx >= 0
+! && (cstack->cs_flags[cstack->cs_idx] & CSF_THROWN)
+! && !(cstack->cs_flags[cstack->cs_idx] & CSF_CAUGHT));
+! else if (ea.cmdidx == CMD_else || ea.cmdidx == CMD_elseif)
+! skip = skip || !(cstack->cs_idx >= 0
+! && !(cstack->cs_flags[cstack->cs_idx]
+! & (CSF_ACTIVE | CSF_TRUE)));
+! else if (ea.cmdidx == CMD_finally)
+! skip = FALSE;
+! else if (ea.cmdidx != CMD_endif
+! && ea.cmdidx != CMD_endfor
+! && ea.cmdidx != CMD_endtry
+! && ea.cmdidx != CMD_endwhile)
+! skip = ea.skip;
+!
+! if (!skip)
+! {
+! if (getline_equal(fgetline, cookie, get_func_line))
+! func_line_exec(getline_cookie(fgetline, cookie));
+! else if (getline_equal(fgetline, cookie, getsourceline))
+! script_line_exec();
+! }
+ }
+! # endif
+
+ /* May go to debug mode. If this happens and the ">quit" debug command is
+ * used, throw an interrupt exception and skip the next command. */
+***************
+*** 1789,1805 ****
+ #endif
+
+ /*
+- * 3. Skip over the range to find the command. Let "p" point to after it.
+- *
+- * We need the command to know what kind of range it uses.
+- */
+- cmd = ea.cmd;
+- ea.cmd = skip_range(ea.cmd, NULL);
+- if (*ea.cmd == '*' && vim_strchr(p_cpo, CPO_STAR) == NULL)
+- ea.cmd = skipwhite(ea.cmd + 1);
+- p = find_command(&ea, NULL);
+-
+- /*
+ * 4. parse a range specifier of the form: addr [,addr] [;addr] ..
+ *
+ * where 'addr' is:
+--- 1823,1828 ----
+*** ../vim-8.1.0308/src/testdir/test_profile.vim 2018-06-30 21:18:10.486300954 +0200
+--- src/testdir/test_profile.vim 2018-08-21 17:35:04.318354275 +0200
+***************
+*** 67,73 ****
+ call assert_match('^\s*1\s\+.*\slet l:count = 100$', lines[13])
+ call assert_match('^\s*101\s\+.*\swhile l:count > 0$', lines[14])
+ call assert_match('^\s*100\s\+.*\s let l:count = l:count - 1$', lines[15])
+! call assert_match('^\s*100\s\+.*\sendwhile$', lines[16])
+ call assert_equal('', lines[17])
+ call assert_equal('FUNCTIONS SORTED ON TOTAL TIME', lines[18])
+ call assert_equal('count total (s) self (s) function', lines[19])
+--- 67,73 ----
+ call assert_match('^\s*1\s\+.*\slet l:count = 100$', lines[13])
+ call assert_match('^\s*101\s\+.*\swhile l:count > 0$', lines[14])
+ call assert_match('^\s*100\s\+.*\s let l:count = l:count - 1$', lines[15])
+! call assert_match('^\s*101\s\+.*\sendwhile$', lines[16])
+ call assert_equal('', lines[17])
+ call assert_equal('FUNCTIONS SORTED ON TOTAL TIME', lines[18])
+ call assert_equal('count total (s) self (s) function', lines[19])
+***************
+*** 84,89 ****
+--- 84,310 ----
+ call delete('Xprofile_func.log')
+ endfunc
+
++ func Test_profile_func_with_ifelse()
++ let lines = [
++ \ "func! Foo1()",
++ \ " if 1",
++ \ " let x = 0",
++ \ " elseif 1",
++ \ " let x = 1",
++ \ " else",
++ \ " let x = 2",
++ \ " endif",
++ \ "endfunc",
++ \ "func! Foo2()",
++ \ " if 0",
++ \ " let x = 0",
++ \ " elseif 1",
++ \ " let x = 1",
++ \ " else",
++ \ " let x = 2",
++ \ " endif",
++ \ "endfunc",
++ \ "func! Foo3()",
++ \ " if 0",
++ \ " let x = 0",
++ \ " elseif 0",
++ \ " let x = 1",
++ \ " else",
++ \ " let x = 2",
++ \ " endif",
++ \ "endfunc",
++ \ "call Foo1()",
++ \ "call Foo2()",
++ \ "call Foo3()",
++ \ ]
++
++ call writefile(lines, 'Xprofile_func.vim')
++ call system(v:progpath
++ \ . ' -es -u NONE -U NONE -i NONE --noplugin'
++ \ . ' -c "profile start Xprofile_func.log"'
++ \ . ' -c "profile func Foo*"'
++ \ . ' -c "so Xprofile_func.vim"'
++ \ . ' -c "qall!"')
++ call assert_equal(0, v:shell_error)
++
++ let lines = readfile('Xprofile_func.log')
++
++ " - Foo1() should pass 'if' block.
++ " - Foo2() should pass 'elseif' block.
++ " - Foo3() should pass 'else' block.
++ call assert_equal(54, len(lines))
++
++ call assert_equal('FUNCTION Foo1()', lines[0])
++ call assert_equal('Called 1 time', lines[1])
++ call assert_match('^Total time:\s\+\d\+\.\d\+$', lines[2])
++ call assert_match('^ Self time:\s\+\d\+\.\d\+$', lines[3])
++ call assert_equal('', lines[4])
++ call assert_equal('count total (s) self (s)', lines[5])
++ call assert_match('^\s*1\s\+.*\sif 1$', lines[6])
++ call assert_match('^\s*1\s\+.*\s let x = 0$', lines[7])
++ call assert_match( '^\s\+elseif 1$', lines[8])
++ call assert_match( '^\s\+let x = 1$', lines[9])
++ call assert_match( '^\s\+else$', lines[10])
++ call assert_match( '^\s\+let x = 2$', lines[11])
++ call assert_match('^\s*1\s\+.*\sendif$', lines[12])
++ call assert_equal('', lines[13])
++ call assert_equal('FUNCTION Foo2()', lines[14])
++ call assert_equal('Called 1 time', lines[15])
++ call assert_match('^Total time:\s\+\d\+\.\d\+$', lines[16])
++ call assert_match('^ Self time:\s\+\d\+\.\d\+$', lines[17])
++ call assert_equal('', lines[18])
++ call assert_equal('count total (s) self (s)', lines[19])
++ call assert_match('^\s*1\s\+.*\sif 0$', lines[20])
++ call assert_match( '^\s\+let x = 0$', lines[21])
++ call assert_match('^\s*1\s\+.*\selseif 1$', lines[22])
++ call assert_match('^\s*1\s\+.*\s let x = 1$', lines[23])
++ call assert_match( '^\s\+else$', lines[24])
++ call assert_match( '^\s\+let x = 2$', lines[25])
++ call assert_match('^\s*1\s\+.*\sendif$', lines[26])
++ call assert_equal('', lines[27])
++ call assert_equal('FUNCTION Foo3()', lines[28])
++ call assert_equal('Called 1 time', lines[29])
++ call assert_match('^Total time:\s\+\d\+\.\d\+$', lines[30])
++ call assert_match('^ Self time:\s\+\d\+\.\d\+$', lines[31])
++ call assert_equal('', lines[32])
++ call assert_equal('count total (s) self (s)', lines[33])
++ call assert_match('^\s*1\s\+.*\sif 0$', lines[34])
++ call assert_match( '^\s\+let x = 0$', lines[35])
++ call assert_match('^\s*1\s\+.*\selseif 0$', lines[36])
++ call assert_match( '^\s\+let x = 1$', lines[37])
++ call assert_match('^\s*1\s\+.*\selse$', lines[38])
++ call assert_match('^\s*1\s\+.*\s let x = 2$', lines[39])
++ call assert_match('^\s*1\s\+.*\sendif$', lines[40])
++ call assert_equal('', lines[41])
++ call assert_equal('FUNCTIONS SORTED ON TOTAL TIME', lines[42])
++ call assert_equal('count total (s) self (s) function', lines[43])
++ call assert_match('^\s*1\s\+\d\+\.\d\+\s\+Foo.()$', lines[44])
++ call assert_match('^\s*1\s\+\d\+\.\d\+\s\+Foo.()$', lines[45])
++ call assert_match('^\s*1\s\+\d\+\.\d\+\s\+Foo.()$', lines[46])
++ call assert_equal('', lines[47])
++ call assert_equal('FUNCTIONS SORTED ON SELF TIME', lines[48])
++ call assert_equal('count total (s) self (s) function', lines[49])
++ call assert_match('^\s*1\s\+\d\+\.\d\+\s\+Foo.()$', lines[50])
++ call assert_match('^\s*1\s\+\d\+\.\d\+\s\+Foo.()$', lines[51])
++ call assert_match('^\s*1\s\+\d\+\.\d\+\s\+Foo.()$', lines[52])
++ call assert_equal('', lines[53])
++
++ call delete('Xprofile_func.vim')
++ call delete('Xprofile_func.log')
++ endfunc
++
++ func Test_profile_func_with_trycatch()
++ let lines = [
++ \ "func! Foo1()",
++ \ " try",
++ \ " let x = 0",
++ \ " catch",
++ \ " let x = 1",
++ \ " finally",
++ \ " let x = 2",
++ \ " endtry",
++ \ "endfunc",
++ \ "func! Foo2()",
++ \ " try",
++ \ " throw 0",
++ \ " catch",
++ \ " let x = 1",
++ \ " finally",
++ \ " let x = 2",
++ \ " endtry",
++ \ "endfunc",
++ \ "func! Foo3()",
++ \ " try",
++ \ " throw 0",
++ \ " catch",
++ \ " throw 1",
++ \ " finally",
++ \ " let x = 2",
++ \ " endtry",
++ \ "endfunc",
++ \ "call Foo1()",
++ \ "call Foo2()",
++ \ "try",
++ \ " call Foo3()",
++ \ "catch",
++ \ "endtry",
++ \ ]
++
++ call writefile(lines, 'Xprofile_func.vim')
++ call system(v:progpath
++ \ . ' -es -u NONE -U NONE -i NONE --noplugin'
++ \ . ' -c "profile start Xprofile_func.log"'
++ \ . ' -c "profile func Foo*"'
++ \ . ' -c "so Xprofile_func.vim"'
++ \ . ' -c "qall!"')
++ call assert_equal(0, v:shell_error)
++
++ let lines = readfile('Xprofile_func.log')
++
++ " - Foo1() should pass 'try' 'finally' blocks.
++ " - Foo2() should pass 'catch' 'finally' blocks.
++ " - Foo3() should not pass 'endtry'.
++ call assert_equal(54, len(lines))
++
++ call assert_equal('FUNCTION Foo1()', lines[0])
++ call assert_equal('Called 1 time', lines[1])
++ call assert_match('^Total time:\s\+\d\+\.\d\+$', lines[2])
++ call assert_match('^ Self time:\s\+\d\+\.\d\+$', lines[3])
++ call assert_equal('', lines[4])
++ call assert_equal('count total (s) self (s)', lines[5])
++ call assert_match('^\s*1\s\+.*\stry$', lines[6])
++ call assert_match('^\s*1\s\+.*\s let x = 0$', lines[7])
++ call assert_match( '^\s\+catch$', lines[8])
++ call assert_match( '^\s\+let x = 1$', lines[9])
++ call assert_match('^\s*1\s\+.*\sfinally$', lines[10])
++ call assert_match('^\s*1\s\+.*\s let x = 2$', lines[11])
++ call assert_match('^\s*1\s\+.*\sendtry$', lines[12])
++ call assert_equal('', lines[13])
++ call assert_equal('FUNCTION Foo2()', lines[14])
++ call assert_equal('Called 1 time', lines[15])
++ call assert_match('^Total time:\s\+\d\+\.\d\+$', lines[16])
++ call assert_match('^ Self time:\s\+\d\+\.\d\+$', lines[17])
++ call assert_equal('', lines[18])
++ call assert_equal('count total (s) self (s)', lines[19])
++ call assert_match('^\s*1\s\+.*\stry$', lines[20])
++ call assert_match('^\s*1\s\+.*\s throw 0$', lines[21])
++ call assert_match('^\s*1\s\+.*\scatch$', lines[22])
++ call assert_match('^\s*1\s\+.*\s let x = 1$', lines[23])
++ call assert_match('^\s*1\s\+.*\sfinally$', lines[24])
++ call assert_match('^\s*1\s\+.*\s let x = 2$', lines[25])
++ call assert_match('^\s*1\s\+.*\sendtry$', lines[26])
++ call assert_equal('', lines[27])
++ call assert_equal('FUNCTION Foo3()', lines[28])
++ call assert_equal('Called 1 time', lines[29])
++ call assert_match('^Total time:\s\+\d\+\.\d\+$', lines[30])
++ call assert_match('^ Self time:\s\+\d\+\.\d\+$', lines[31])
++ call assert_equal('', lines[32])
++ call assert_equal('count total (s) self (s)', lines[33])
++ call assert_match('^\s*1\s\+.*\stry$', lines[34])
++ call assert_match('^\s*1\s\+.*\s throw 0$', lines[35])
++ call assert_match('^\s*1\s\+.*\scatch$', lines[36])
++ call assert_match('^\s*1\s\+.*\s throw 1$', lines[37])
++ call assert_match('^\s*1\s\+.*\sfinally$', lines[38])
++ call assert_match('^\s*1\s\+.*\s let x = 2$', lines[39])
++ call assert_match( '^\s\+endtry$', lines[40])
++ call assert_equal('', lines[41])
++ call assert_equal('FUNCTIONS SORTED ON TOTAL TIME', lines[42])
++ call assert_equal('count total (s) self (s) function', lines[43])
++ call assert_match('^\s*1\s\+\d\+\.\d\+\s\+Foo.()$', lines[44])
++ call assert_match('^\s*1\s\+\d\+\.\d\+\s\+Foo.()$', lines[45])
++ call assert_match('^\s*1\s\+\d\+\.\d\+\s\+Foo.()$', lines[46])
++ call assert_equal('', lines[47])
++ call assert_equal('FUNCTIONS SORTED ON SELF TIME', lines[48])
++ call assert_equal('count total (s) self (s) function', lines[49])
++ call assert_match('^\s*1\s\+\d\+\.\d\+\s\+Foo.()$', lines[50])
++ call assert_match('^\s*1\s\+\d\+\.\d\+\s\+Foo.()$', lines[51])
++ call assert_match('^\s*1\s\+\d\+\.\d\+\s\+Foo.()$', lines[52])
++ call assert_equal('', lines[53])
++
++ call delete('Xprofile_func.vim')
++ call delete('Xprofile_func.log')
++ endfunc
++
+ func Test_profile_file()
+ let lines = [
+ \ 'func! Foo()',
+***************
+*** 123,129 ****
+ call assert_equal(' " a comment', lines[9])
+ " if self and total are equal we only get one number
+ call assert_match('^\s*20\s\+\(\d\+\.\d\+\s\+\)\=\d\+\.\d\+\s\+call Foo()$', lines[10])
+! call assert_match('^\s*20\s\+\d\+\.\d\+\s\+endfor$', lines[11])
+ " if self and total are equal we only get one number
+ call assert_match('^\s*2\s\+\(\d\+\.\d\+\s\+\)\=\d\+\.\d\+\s\+call Foo()$', lines[12])
+ call assert_equal('', lines[13])
+--- 344,350 ----
+ call assert_equal(' " a comment', lines[9])
+ " if self and total are equal we only get one number
+ call assert_match('^\s*20\s\+\(\d\+\.\d\+\s\+\)\=\d\+\.\d\+\s\+call Foo()$', lines[10])
+! call assert_match('^\s*22\s\+\d\+\.\d\+\s\+endfor$', lines[11])
+ " if self and total are equal we only get one number
+ call assert_match('^\s*2\s\+\(\d\+\.\d\+\s\+\)\=\d\+\.\d\+\s\+call Foo()$', lines[12])
+ call assert_equal('', lines[13])
+*** ../vim-8.1.0308/src/version.c 2018-08-21 17:07:40.155188638 +0200
+--- src/version.c 2018-08-21 17:48:43.353706395 +0200
+***************
+*** 796,797 ****
+--- 796,799 ----
+ { /* Add new patch number below this line */
++ /**/
++ 309,
+ /**/
+
+--
+ARTHUR: ... and I am your king ....
+OLD WOMAN: Ooooh! I didn't know we had a king. I thought we were an
+ autonomous collective ...
+ "Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///