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 <[email protected]>
! " Last Change:        2015 Dec 30
  
  
"-------------------------------------------------------------------------------
  " Test environment                                                        {{{1
--- 1,6 ----
  " Vim script language tests
  " Author:     Servatius Brandt <[email protected]>
! " 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 -- [email protected] -- 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    ///

-- 
-- 
You received this message from the "vim_dev" maillist.
Do not top-post! Type your reply below the text you are replying to.
For more information, visit http://www.vim.org/maillist.php

--- 
You received this message because you are subscribed to the Google Groups 
"vim_dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/d/optout.

Raspunde prin e-mail lui