To: vim_dev@googlegroups.com Subject: Patch 7.4.1030 Fcc: outbox From: Bram Moolenaar Mime-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ------------ Patch 7.4.1030 Problem: test49 is still slow. Solution: Move more tests from old to new style. Files: src/testdir/test_viml.vim, src/testdir/test49.vim, src/testdir/test49.ok, src/testdir/runtest.vim *** ../vim-7.4.1029/src/testdir/test_viml.vim 2015-12-30 15:49:01.817318449 +0100 --- src/testdir/test_viml.vim 2016-01-02 19:35:43.149942668 +0100 *************** *** 402,407 **** --- 402,913 ---- endfunc "------------------------------------------------------------------------------- + " Test 7: Continuing on errors outside functions {{{1 + " + " On an error outside a function, the script processing continues + " at the line following the outermost :endif or :endwhile. When not + " inside an :if or :while, the script processing continues at the next + " line. + "------------------------------------------------------------------------------- + + XpathINIT + + if 1 + Xpath 'a' + while 1 + Xpath 'b' + asdf + Xpath 'c' + break + endwhile | Xpath 'd' + Xpath 'e' + endif | Xpath 'f' + Xpath 'g' + + while 1 + Xpath 'h' + if 1 + Xpath 'i' + asdf + Xpath 'j' + endif | Xpath 'k' + Xpath 'l' + break + endwhile | Xpath 'm' + Xpath 'n' + + asdf + Xpath 'o' + + asdf | Xpath 'p' + Xpath 'q' + + let g:test7_result = g:Xpath + + func Test_error_in_script() + call assert_equal('abghinoq', g:test7_result) + endfunc + + "------------------------------------------------------------------------------- + " Test 8: Aborting and continuing on errors inside functions {{{1 + " + " On an error inside a function without the "abort" attribute, the + " script processing continues at the next line (unless the error was + " in a :return command). On an error inside a function with the + " "abort" attribute, the function is aborted and the script processing + " continues after the function call; the value -1 is returned then. + "------------------------------------------------------------------------------- + + XpathINIT + + function! T8_F() + if 1 + Xpath 'a' + while 1 + Xpath 'b' + asdf + Xpath 'c' + asdf | Xpath 'd' + Xpath 'e' + break + endwhile + Xpath 'f' + endif | Xpath 'g' + Xpath 'h' + + while 1 + Xpath 'i' + if 1 + Xpath 'j' + asdf + Xpath 'k' + asdf | Xpath 'l' + Xpath 'm' + endif + Xpath 'n' + break + endwhile | Xpath 'o' + Xpath 'p' + + return novar " returns (default return value 0) + Xpath 'q' + return 1 " not reached + endfunction + + function! T8_G() abort + if 1 + Xpath 'r' + while 1 + Xpath 's' + asdf " returns -1 + Xpath 't' + break + endwhile + Xpath 'v' + endif | Xpath 'w' + Xpath 'x' + + return -4 " not reached + endfunction + + function! T8_H() abort + while 1 + Xpath 'A' + if 1 + Xpath 'B' + asdf " returns -1 + Xpath 'C' + endif + Xpath 'D' + break + endwhile | Xpath 'E' + Xpath 'F' + + return -4 " not reached + endfunction + + " Aborted functions (T8_G and T8_H) return -1. + let g:test8_sum = (T8_F() + 1) - 4 * T8_G() - 8 * T8_H() + Xpath 'X' + let g:test8_result = g:Xpath + + func Test_error_in_function() + call assert_equal(13, g:test8_sum) + call assert_equal('abcefghijkmnoprsABX', g:test8_result) + + delfunction T8_F + delfunction T8_G + delfunction T8_H + endfunc + + + "------------------------------------------------------------------------------- + " Test 9: Continuing after aborted functions {{{1 + " + " When a function with the "abort" attribute is aborted due to an + " error, the next function back in the call hierarchy without an + " "abort" attribute continues; the value -1 is returned then. + "------------------------------------------------------------------------------- + + XpathINIT + + function! F() abort + Xpath 'a' + let result = G() " not aborted + Xpath 'b' + if result != 2 + Xpath 'c' + endif + return 1 + endfunction + + function! G() " no abort attribute + Xpath 'd' + if H() != -1 " aborted + Xpath 'e' + endif + Xpath 'f' + return 2 + endfunction + + function! H() abort + Xpath 'g' + call I() " aborted + Xpath 'h' + return 4 + endfunction + + function! I() abort + Xpath 'i' + asdf " error + Xpath 'j' + return 8 + endfunction + + if F() != 1 + Xpath 'k' + endif + + let g:test9_result = g:Xpath + + delfunction F + delfunction G + delfunction H + delfunction I + + func Test_func_abort() + call assert_equal('adgifb', g:test9_result) + endfunc + + + "------------------------------------------------------------------------------- + " Test 10: :if, :elseif, :while argument parsing {{{1 + " + " A '"' or '|' in an argument expression must not be mixed up with + " a comment or a next command after a bar. Parsing errors should + " be recognized. + "------------------------------------------------------------------------------- + + XpathINIT + + function! MSG(enr, emsg) + let english = v:lang == "C" || v:lang =~ '^[Ee]n' + if a:enr == "" + Xout "TODO: Add message number for:" a:emsg + let v:errmsg = ":" . v:errmsg + endif + let match = 1 + if v:errmsg !~ '^'.a:enr.':' || (english && v:errmsg !~ a:emsg) + let match = 0 + if v:errmsg == "" + Xout "Message missing." + else + let v:errmsg = escape(v:errmsg, '"') + Xout "Unexpected message:" v:errmsg + endif + endif + return match + endfunction + + if 1 || strlen("\"") | Xpath 'a' + Xpath 'b' + endif + Xpath 'c' + + if 0 + elseif 1 || strlen("\"") | Xpath 'd' + Xpath 'e' + endif + Xpath 'f' + + while 1 || strlen("\"") | Xpath 'g' + Xpath 'h' + break + endwhile + Xpath 'i' + + let v:errmsg = "" + if 1 ||| strlen("\"") | Xpath 'j' + Xpath 'k' + endif + Xpath 'l' + if !MSG('E15', "Invalid expression") + Xpath 'm' + endif + + let v:errmsg = "" + if 0 + elseif 1 ||| strlen("\"") | Xpath 'n' + Xpath 'o' + endif + Xpath 'p' + if !MSG('E15', "Invalid expression") + Xpath 'q' + endif + + let v:errmsg = "" + while 1 ||| strlen("\"") | Xpath 'r' + Xpath 's' + break + endwhile + Xpath 't' + if !MSG('E15', "Invalid expression") + Xpath 'u' + endif + + let g:test10_result = g:Xpath + delfunction MSG + + func Test_expr_parsing() + call assert_equal('abcdefghilpt', g:test10_result) + endfunc + + + "------------------------------------------------------------------------------- + " Test 11: :if, :elseif, :while argument evaluation after abort {{{1 + " + " When code is skipped over due to an error, the boolean argument to + " an :if, :elseif, or :while must not be evaluated. + "------------------------------------------------------------------------------- + + XpathINIT + + let calls = 0 + + function! P(num) + let g:calls = g:calls + a:num " side effect on call + return 0 + endfunction + + if 1 + Xpath 'a' + asdf " error + Xpath 'b' + if P(1) " should not be called + Xpath 'c' + elseif !P(2) " should not be called + Xpath 'd' + else + Xpath 'e' + endif + Xpath 'f' + while P(4) " should not be called + Xpath 'g' + endwhile + Xpath 'h' + endif + Xpath 'x' + + let g:test11_calls = calls + let g:test11_result = g:Xpath + + unlet calls + delfunction P + + func Test_arg_abort() + call assert_equal(0, g:test11_calls) + call assert_equal('ax', g:test11_result) + endfunc + + + "------------------------------------------------------------------------------- + " Test 12: Expressions in braces in skipped code {{{1 + " + " In code skipped over due to an error or inactive conditional, + " an expression in braces as part of a variable or function name + " should not be evaluated. + "------------------------------------------------------------------------------- + + XpathINIT + + function! NULL() + Xpath 'a' + return 0 + endfunction + + function! ZERO() + Xpath 'b' + return 0 + endfunction + + function! F0() + Xpath 'c' + endfunction + + function! F1(arg) + Xpath 'e' + endfunction + + let V0 = 1 + + Xpath 'f' + echo 0 ? F{NULL() + V{ZERO()}}() : 1 + + Xpath 'g' + if 0 + Xpath 'h' + call F{NULL() + V{ZERO()}}() + endif + + Xpath 'i' + if 1 + asdf " error + Xpath 'j' + call F1(F{NULL() + V{ZERO()}}()) + endif + + Xpath 'k' + if 1 + asdf " error + Xpath 'l' + call F{NULL() + V{ZERO()}}() + endif + + let g:test12_result = g:Xpath + + func Test_braces_skipped() + call assert_equal('fgik', g:test12_result) + endfunc + + + "------------------------------------------------------------------------------- + " Test 13: Failure in argument evaluation for :while {{{1 + " + " A failure in the expression evaluation for the condition of a :while + " causes the whole :while loop until the matching :endwhile being + " ignored. Continuation is at the next following line. + "------------------------------------------------------------------------------- + + XpathINIT + + Xpath 'a' + while asdf + Xpath 'b' + while 1 + Xpath 'c' + break + endwhile + Xpath 'd' + break + endwhile + Xpath 'e' + + while asdf | Xpath 'f' | endwhile | Xpath 'g' + Xpath 'h' + let g:test13_result = g:Xpath + + func Test_while_fail() + call assert_equal('aeh', g:test13_result) + endfunc + + + "------------------------------------------------------------------------------- + " Test 14: Failure in argument evaluation for :if {{{1 + " + " A failure in the expression evaluation for the condition of an :if + " does not cause the corresponding :else or :endif being matched to + " a previous :if/:elseif. Neither of both branches of the failed :if + " are executed. + "------------------------------------------------------------------------------- + + XpathINIT + + function! F() + Xpath 'a' + let x = 0 + if x " false + Xpath 'b' + elseif !x " always true + Xpath 'c' + let x = 1 + if g:boolvar " possibly undefined + Xpath 'd' + else + Xpath 'e' + endif + Xpath 'f' + elseif x " never executed + Xpath 'g' + endif + Xpath 'h' + endfunction + + let boolvar = 1 + call F() + Xpath '-' + + unlet boolvar + call F() + let g:test14_result = g:Xpath + + delfunction F + + func Test_if_fail() + call assert_equal('acdfh-acfh', g:test14_result) + endfunc + + + "------------------------------------------------------------------------------- + " Test 15: Failure in argument evaluation for :if (bar) {{{1 + " + " Like previous test, except that the failing :if ... | ... | :endif + " is in a single line. + "------------------------------------------------------------------------------- + + XpathINIT + + function! F() + Xpath 'a' + let x = 0 + if x " false + Xpath 'b' + elseif !x " always true + Xpath 'c' + let x = 1 + if g:boolvar | Xpath 'd' | else | Xpath 'e' | endif + Xpath 'f' + elseif x " never executed + Xpath 'g' + endif + Xpath 'h' + endfunction + + let boolvar = 1 + call F() + Xpath '-' + + unlet boolvar + call F() + let g:test15_result = g:Xpath + + delfunction F + + func Test_if_bar_fail() + call assert_equal('acdfh-acfh', g:test15_result) + endfunc + + + "------------------------------------------------------------------------------- " Modelines {{{1 " vim: ts=8 sw=4 tw=80 fdm=marker " vim: fdt=substitute(substitute(foldtext(),\ '\\%(^+--\\)\\@<=\\(\\s*\\)\\(.\\{-}\\)\:\ \\%(\"\ \\)\\=\\(Test\ \\d*\\)\:\\s*',\ '\\3\ (\\2)\:\ \\1',\ \"\"),\ '\\(Test\\s*\\)\\(\\d\\)\\D\\@=',\ '\\1\ \\2',\ "") *** ../vim-7.4.1029/src/testdir/test49.vim 2015-12-30 15:49:01.817318449 +0100 --- src/testdir/test49.vim 2016-01-02 19:33:06.027650200 +0100 *************** *** 1,6 **** " Vim script language tests " Author: Servatius Brandt ! " Last Change: 2015 Dec 30 "------------------------------------------------------------------------------- " Test environment {{{1 --- 1,6 ---- " Vim script language tests " Author: Servatius Brandt ! " Last Change: 2016 Jan 02 "------------------------------------------------------------------------------- " Test environment {{{1 *************** *** 608,1110 **** " END_OF_TEST_ENVIRONMENT - do not change or remove this line. ! " Tests 1 to 6 were moved to test_viml.vim ! let Xtest = 7 ! ! "------------------------------------------------------------------------------- ! " Test 7: Continuing on errors outside functions {{{1 ! " ! " On an error outside a function, the script processing continues ! " at the line following the outermost :endif or :endwhile. When not ! " inside an :if or :while, the script processing continues at the next ! " line. ! "------------------------------------------------------------------------------- ! ! XpathINIT ! ! if 1 ! Xpath 1 " X: 1 ! while 1 ! Xpath 2 " X: 2 ! asdf ! Xpath 4 " X: 0 ! break ! endwhile | Xpath 8 " X: 0 ! Xpath 16 " X: 0 ! endif | Xpath 32 " X: 0 ! Xpath 64 " X: 64 ! ! while 1 ! Xpath 128 " X: 128 ! if 1 ! Xpath 256 " X: 256 ! asdf ! Xpath 512 " X: 0 ! endif | Xpath 1024 " X: 0 ! Xpath 2048 " X: 0 ! break ! endwhile | Xpath 4096 " X: 0 ! Xpath 8192 " X: 8192 ! ! asdf ! Xpath 16384 " X: 16384 ! ! asdf | Xpath 32768 " X: 0 ! Xpath 65536 " X: 65536 ! ! Xcheck 90563 ! ! ! "------------------------------------------------------------------------------- ! " Test 8: Aborting and continuing on errors inside functions {{{1 ! " ! " On an error inside a function without the "abort" attribute, the ! " script processing continues at the next line (unless the error was ! " in a :return command). On an error inside a function with the ! " "abort" attribute, the function is aborted and the script processing ! " continues after the function call; the value -1 is returned then. ! "------------------------------------------------------------------------------- ! ! XpathINIT ! ! function! F() ! if 1 ! Xpath 1 " X: 1 ! while 1 ! Xpath 2 " X: 2 ! asdf ! Xpath 4 " X: 4 ! asdf | Xpath 8 " X: 0 ! Xpath 16 " X: 16 ! break ! endwhile ! Xpath 32 " X: 32 ! endif | Xpath 64 " X: 64 ! Xpath 128 " X: 128 ! ! while 1 ! Xpath 256 " X: 256 ! if 1 ! Xpath 512 " X: 512 ! asdf ! Xpath 1024 " X: 1024 ! asdf | Xpath 2048 " X: 0 ! Xpath 4096 " X: 4096 ! endif ! Xpath 8192 " X: 8192 ! break ! endwhile | Xpath 16384 " X: 16384 ! Xpath 32768 " X: 32768 ! ! return novar " returns (default return value 0) ! Xpath 65536 " X: 0 ! return 1 " not reached ! endfunction ! ! function! G() abort ! if 1 ! Xpath 131072 " X: 131072 ! while 1 ! Xpath 262144 " X: 262144 ! asdf " returns -1 ! Xpath 524288 " X: 0 ! break ! endwhile ! Xpath 1048576 " X: 0 ! endif | Xpath 2097152 " X: 0 ! Xpath Xpath 4194304 " X: 0 ! ! return -4 " not reached ! endfunction ! ! function! H() abort ! while 1 ! Xpath 8388608 " X: 8388608 ! if 1 ! Xpath 16777216 " X: 16777216 ! asdf " returns -1 ! Xpath 33554432 " X: 0 ! endif ! Xpath 67108864 " X: 0 ! break ! endwhile | Xpath 134217728 " X: 0 ! Xpath 268435456 " X: 0 ! ! return -4 " not reached ! endfunction ! ! " Aborted functions (G and H) return -1. ! let sum = (F() + 1) - 4*G() - 8*H() ! Xpath 536870912 " X: 536870912 ! if sum != 13 ! Xpath 1073741824 " X: 0 ! Xout "sum is" sum ! endif ! ! unlet sum ! delfunction F ! delfunction G ! delfunction H ! ! Xcheck 562493431 ! ! ! "------------------------------------------------------------------------------- ! " Test 9: Continuing after aborted functions {{{1 ! " ! " When a function with the "abort" attribute is aborted due to an ! " error, the next function back in the call hierarchy without an ! " "abort" attribute continues; the value -1 is returned then. ! "------------------------------------------------------------------------------- ! ! XpathINIT ! ! function! F() abort ! Xpath 1 " X: 1 ! let result = G() " not aborted ! Xpath 2 " X: 2 ! if result != 2 ! Xpath 4 " X: 0 ! endif ! return 1 ! endfunction ! ! function! G() " no abort attribute ! Xpath 8 " X: 8 ! if H() != -1 " aborted ! Xpath 16 " X: 0 ! endif ! Xpath 32 " X: 32 ! return 2 ! endfunction ! ! function! H() abort ! Xpath 64 " X: 64 ! call I() " aborted ! Xpath 128 " X: 0 ! return 4 ! endfunction ! ! function! I() abort ! Xpath 256 " X: 256 ! asdf " error ! Xpath 512 " X: 0 ! return 8 ! endfunction ! ! if F() != 1 ! Xpath 1024 " X: 0 ! endif ! ! delfunction F ! delfunction G ! delfunction H ! delfunction I ! ! Xcheck 363 ! ! ! "------------------------------------------------------------------------------- ! " Test 10: :if, :elseif, :while argument parsing {{{1 ! " ! " A '"' or '|' in an argument expression must not be mixed up with ! " a comment or a next command after a bar. Parsing errors should ! " be recognized. ! "------------------------------------------------------------------------------- ! ! XpathINIT ! ! function! MSG(enr, emsg) ! let english = v:lang == "C" || v:lang =~ '^[Ee]n' ! if a:enr == "" ! Xout "TODO: Add message number for:" a:emsg ! let v:errmsg = ":" . v:errmsg ! endif ! let match = 1 ! if v:errmsg !~ '^'.a:enr.':' || (english && v:errmsg !~ a:emsg) ! let match = 0 ! if v:errmsg == "" ! Xout "Message missing." ! else ! let v:errmsg = escape(v:errmsg, '"') ! Xout "Unexpected message:" v:errmsg ! endif ! endif ! return match ! endfunction ! ! if 1 || strlen("\"") | Xpath 1 " X: 1 ! Xpath 2 " X: 2 ! endif ! Xpath 4 " X: 4 ! ! if 0 ! elseif 1 || strlen("\"") | Xpath 8 " X: 8 ! Xpath 16 " X: 16 ! endif ! Xpath 32 " X: 32 ! ! while 1 || strlen("\"") | Xpath 64 " X: 64 ! Xpath 128 " X: 128 ! break ! endwhile ! Xpath 256 " X: 256 ! ! let v:errmsg = "" ! if 1 ||| strlen("\"") | Xpath 512 " X: 0 ! Xpath 1024 " X: 0 ! endif ! Xpath 2048 " X: 2048 ! if !MSG('E15', "Invalid expression") ! Xpath 4096 " X: 0 ! endif ! ! let v:errmsg = "" ! if 0 ! elseif 1 ||| strlen("\"") | Xpath 8192 " X: 0 ! Xpath 16384 " X: 0 ! endif ! Xpath 32768 " X: 32768 ! if !MSG('E15', "Invalid expression") ! Xpath 65536 " X: 0 ! endif ! ! let v:errmsg = "" ! while 1 ||| strlen("\"") | Xpath 131072 " X: 0 ! Xpath 262144 " X: 0 ! break ! endwhile ! Xpath 524288 " X: 524288 ! if !MSG('E15', "Invalid expression") ! Xpath 1048576 " X: 0 ! endif ! ! delfunction MSG ! ! Xcheck 559615 ! ! ! "------------------------------------------------------------------------------- ! " Test 11: :if, :elseif, :while argument evaluation after abort {{{1 ! " ! " When code is skipped over due to an error, the boolean argument to ! " an :if, :elseif, or :while must not be evaluated. ! "------------------------------------------------------------------------------- ! ! XpathINIT ! ! let calls = 0 ! ! function! P(num) ! let g:calls = g:calls + a:num " side effect on call ! return 0 ! endfunction ! ! if 1 ! Xpath 1 " X: 1 ! asdf " error ! Xpath 2 " X: 0 ! if P(1) " should not be called ! Xpath 4 " X: 0 ! elseif !P(2) " should not be called ! Xpath 8 " X: 0 ! else ! Xpath 16 " X: 0 ! endif ! Xpath 32 " X: 0 ! while P(4) " should not be called ! Xpath 64 " X: 0 ! endwhile ! Xpath 128 " X: 0 ! endif ! ! if calls % 2 ! Xpath 256 " X: 0 ! endif ! if (calls/2) % 2 ! Xpath 512 " X: 0 ! endif ! if (calls/4) % 2 ! Xpath 1024 " X: 0 ! endif ! Xpath 2048 " X: 2048 ! ! unlet calls ! delfunction P ! ! Xcheck 2049 ! ! ! "------------------------------------------------------------------------------- ! " Test 12: Expressions in braces in skipped code {{{1 ! " ! " In code skipped over due to an error or inactive conditional, ! " an expression in braces as part of a variable or function name ! " should not be evaluated. ! "------------------------------------------------------------------------------- ! ! XpathINIT ! ! XloopINIT 1 8 ! ! function! NULL() ! Xloop 1 " X: 0 ! return 0 ! endfunction ! ! function! ZERO() ! Xloop 2 " X: 0 ! return 0 ! endfunction ! ! function! F0() ! Xloop 4 " X: 0 ! endfunction ! ! function! F1(arg) ! Xpath 4096 " X: 0 ! endfunction ! ! let V0 = 1 ! ! Xpath 8192 " X: 8192 ! echo 0 ? F{NULL() + V{ZERO()}}() : 1 ! XloopNEXT ! ! Xpath 16384 " X: 16384 ! if 0 ! Xpath 32768 " X: 0 ! call F{NULL() + V{ZERO()}}() ! endif ! XloopNEXT ! ! Xpath 65536 " X: 65536 ! if 1 ! asdf " error ! Xpath 131072 " X: 0 ! call F1(F{NULL() + V{ZERO()}}()) ! endif ! XloopNEXT ! ! Xpath 262144 " X: 262144 ! if 1 ! asdf " error ! Xpath 524288 " X: 0 ! call F{NULL() + V{ZERO()}}() ! endif ! ! Xcheck 352256 ! ! ! "------------------------------------------------------------------------------- ! " Test 13: Failure in argument evaluation for :while {{{1 ! " ! " A failure in the expression evaluation for the condition of a :while ! " causes the whole :while loop until the matching :endwhile being ! " ignored. Continuation is at the next following line. ! "------------------------------------------------------------------------------- ! ! XpathINIT ! ! Xpath 1 " X: 1 ! while asdf ! Xpath 2 " X: 0 ! while 1 ! Xpath 4 " X: 0 ! break ! endwhile ! Xpath 8 " X: 0 ! break ! endwhile ! Xpath 16 " X: 16 ! ! while asdf | Xpath 32 | endwhile | Xpath 64 " X: 0 ! Xpath 128 " X: 128 ! ! Xcheck 145 ! ! ! "------------------------------------------------------------------------------- ! " Test 14: Failure in argument evaluation for :if {{{1 ! " ! " A failure in the expression evaluation for the condition of an :if ! " does not cause the corresponding :else or :endif being matched to ! " a previous :if/:elseif. Neither of both branches of the failed :if ! " are executed. ! "------------------------------------------------------------------------------- ! ! XpathINIT ! XloopINIT 1 256 ! ! function! F() ! Xloop 1 " X: 1 + 256 * 1 ! let x = 0 ! if x " false ! Xloop 2 " X: 0 + 256 * 0 ! elseif !x " always true ! Xloop 4 " X: 4 + 256 * 4 ! let x = 1 ! if g:boolvar " possibly undefined ! Xloop 8 " X: 8 + 256 * 0 ! else ! Xloop 16 " X: 0 + 256 * 0 ! endif ! Xloop 32 " X: 32 + 256 * 32 ! elseif x " never executed ! Xloop 64 " X: 0 + 256 * 0 ! endif ! Xloop 128 " X: 128 + 256 * 128 ! endfunction ! ! let boolvar = 1 ! call F() ! ! XloopNEXT ! unlet boolvar ! call F() ! ! delfunction F ! ! Xcheck 42413 ! ! ! "------------------------------------------------------------------------------- ! " Test 15: Failure in argument evaluation for :if (bar) {{{1 ! " ! " Like previous test, except that the failing :if ... | ... | :endif ! " is in a single line. ! "------------------------------------------------------------------------------- ! ! XpathINIT ! XloopINIT 1 256 ! ! function! F() ! Xloop 1 " X: 1 + 256 * 1 ! let x = 0 ! if x " false ! Xloop 2 " X: 0 + 256 * 0 ! elseif !x " always true ! Xloop 4 " X: 4 + 256 * 4 ! let x = 1 ! if g:boolvar | Xloop 8 | else | Xloop 16 | endif " X: 8 ! Xloop 32 " X: 32 + 256 * 32 ! elseif x " never executed ! Xloop 64 " X: 0 + 256 * 0 ! endif ! Xloop 128 " X: 128 + 256 * 128 ! endfunction ! ! let boolvar = 1 ! call F() ! ! XloopNEXT ! unlet boolvar ! call F() ! ! delfunction F ! ! Xcheck 42413 ! "------------------------------------------------------------------------------- " Test 16: Double :else or :elseif after :else {{{1 --- 608,615 ---- " END_OF_TEST_ENVIRONMENT - do not change or remove this line. ! " Tests 1 to 15 were moved to test_viml.vim ! let Xtest = 16 "------------------------------------------------------------------------------- " Test 16: Double :else or :elseif after :else {{{1 *** ../vim-7.4.1029/src/testdir/test49.ok 2015-12-30 15:49:01.821318406 +0100 --- src/testdir/test49.ok 2016-01-02 19:36:45.529265190 +0100 *************** *** 1,13 **** Results of test49.vim: - *** Test 7: OK (90563) - *** Test 8: OK (562493431) - *** Test 9: OK (363) - *** Test 10: OK (559615) - *** Test 11: OK (2049) - *** Test 12: OK (352256) - *** Test 13: OK (145) - *** Test 14: OK (42413) - *** Test 15: OK (42413) *** Test 16: OK (8722) *** Test 17: OK (285127993) *** Test 18: OK (67224583) --- 1,4 ---- *** ../vim-7.4.1029/src/testdir/runtest.vim 2015-12-30 15:49:01.817318449 +0100 --- src/testdir/runtest.vim 2016-01-02 18:42:31.260469485 +0100 *************** *** 50,61 **** let fail = 0 let errors = [] let messages = [] ! try source % ! catch ! let fail += 1 ! call add(errors, 'Caught exception: ' . v:exception . ' @ ' . v:throwpoint) ! endtry " Locate Test_ functions and execute them. redir @q --- 50,66 ---- let fail = 0 let errors = [] let messages = [] ! if expand('%') =~ 'test_viml.vim' ! " this test has intentional errors, don't use try/catch. source % ! else ! try ! source % ! catch ! let fail += 1 ! call add(errors, 'Caught exception: ' . v:exception . ' @ ' . v:throwpoint) ! endtry ! endif " Locate Test_ functions and execute them. redir @q *** ../vim-7.4.1029/src/version.c 2016-01-02 18:17:11.736861554 +0100 --- src/version.c 2016-01-02 19:36:59.361114977 +0100 *************** *** 743,744 **** --- 743,746 ---- { /* Add new patch number below this line */ + /**/ + 1030, /**/ -- My girlfriend told me I should be more affectionate. So I got TWO girlfriends. /// 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 ///