diff options
author | Bram Moolenaar <Bram@vim.org> | 2019-11-03 16:17:26 +0100 |
---|---|---|
committer | Bram Moolenaar <Bram@vim.org> | 2019-11-03 16:17:26 +0100 |
commit | 1f068233c101ecf5966e6df14853fe68f08175a7 (patch) | |
tree | 3d81492fbb6acffd26fe69b81ddc124685e6bcc3 | |
parent | 2f7b7b1e123d505637d21e0df28eb9e92667479c (diff) |
patch 8.1.2246: some tests are still in old stylev8.1.2246
Problem: Some tests are still in old style.
Solution: Change a few tests to new style. (Yegappan Lakshmanan)
-rw-r--r-- | src/testdir/Make_all.mak | 2 | ||||
-rw-r--r-- | src/testdir/test49.ok | 28 | ||||
-rw-r--r-- | src/testdir/test49.vim | 2318 | ||||
-rw-r--r-- | src/testdir/test_trycatch.vim | 1977 | ||||
-rw-r--r-- | src/testdir/test_vimscript.vim | 196 | ||||
-rw-r--r-- | src/version.c | 2 |
6 files changed, 2191 insertions, 2332 deletions
diff --git a/src/testdir/Make_all.mak b/src/testdir/Make_all.mak index c22ce3bd6f..f3906ac947 100644 --- a/src/testdir/Make_all.mak +++ b/src/testdir/Make_all.mak @@ -267,6 +267,7 @@ NEW_TESTS = \ test_textprop \ test_timers \ test_true_false \ + test_trycatch \ test_undo \ test_unlet \ test_user_func \ @@ -433,6 +434,7 @@ NEW_TESTS_RES = \ test_textformat.res \ test_textobjects.res \ test_textprop.res \ + test_trycatch.res \ test_undo.res \ test_user_func.res \ test_usercommands.res \ diff --git a/src/testdir/test49.ok b/src/testdir/test49.ok index 50fc5d2cef..9f283e808b 100644 --- a/src/testdir/test49.ok +++ b/src/testdir/test49.ok @@ -1,6 +1,4 @@ Results of test49.vim: -*** Test 16: OK (8722) -*** Test 17: OK (285127993) *** Test 18: OK (67224583) *** Test 19: OK (69275973) *** Test 20: OK (1874575085) @@ -8,16 +6,11 @@ Results of test49.vim: *** Test 22: OK (4161) *** Test 23: OK (49) *** Test 24: OK (41) -*** Test 25: OK (260177811) -*** Test 26: OK (1681500476) *** Test 27: OK (1996459) *** Test 28: OK (1996459) *** Test 29: OK (170428555) *** Test 30: OK (190905173) *** Test 31: OK (190905173) -*** Test 32: OK (354833067) ---- Test 33: sum = 178275600 (ok) -*** Test 33: OK (1216907538) *** Test 34: OK (2146584868) *** Test 35: OK (2146584868) *** Test 36: OK (1071644672) @@ -25,17 +18,8 @@ Results of test49.vim: *** Test 38: OK (357908480) *** Test 39: OK (357908480) *** Test 40: OK (357908480) -*** Test 41: OK (3076095) -*** Test 42: OK (1505155949) -*** Test 43: OK (1157763329) -*** Test 44: OK (1031761407) -*** Test 45: OK (1157763329) -*** Test 46: OK (739407) -*** Test 47: OK (371213935) -*** Test 48: OK (756255461) *** Test 49: OK (179000669) *** Test 50: OK (363550045) -*** Test 51: OK (40744667) *** Test 52: OK (1247112011) *** Test 53: OK (131071) *** Test 54: OK (2047) @@ -53,13 +37,6 @@ Results of test49.vim: *** Test 66: OK (5464) *** Test 67: OK (212514423) *** Test 68: OK (212514423) -*** Test 69: OK (8995471) -*** Test 70: OK (69544277) -*** Test 71: OK (34886997) -*** Test 72: OK (1789569365) -*** Test 73: OK (9032615) -*** Test 74: OK (224907669) -*** Test 75: OK (2000403408) *** Test 76: OK (1610087935) *** Test 77: OK (1388671) *** Test 78: OK (134217728) @@ -72,11 +49,6 @@ Results of test49.vim: *** Test 85: OK (198689) --- Test 86: No Crash for vimgrep on BufUnload *** Test 86: OK (0) ---- Test 87: 3 ---- Test 87: 5 ---- Test 87: abcdefghijk ---- Test 87: Successfully executed funcref Add2 -*** Test 87: OK (0) --- Test 88: All tests were run with throwing exceptions on error. The $VIMNOERRTHROW control is not configured. --- Test 88: All tests were run with throwing exceptions on interrupt. diff --git a/src/testdir/test49.vim b/src/testdir/test49.vim index b6f6f6b5dc..f19b9db5ba 100644 --- a/src/testdir/test49.vim +++ b/src/testdir/test49.vim @@ -1,6 +1,6 @@ " Vim script language tests " Author: Servatius Brandt <Servatius.Brandt@fujitsu-siemens.com> -" Last Change: 2019 Oct 08 +" Last Change: 2019 Nov 03 "------------------------------------------------------------------------------- " Test environment {{{1 @@ -608,196 +608,8 @@ com! -nargs=1 -bar ExecAsScript call ExecAsScript(<f-args>) " END_OF_TEST_ENVIRONMENT - do not change or remove this line. -" Tests 1 to 15 were moved to test_vimscript.vim -let Xtest = 16 - -"------------------------------------------------------------------------------- -" Test 16: Double :else or :elseif after :else {{{1 -" -" Multiple :elses or an :elseif after an :else are forbidden. -"------------------------------------------------------------------------------- - -XpathINIT - -function! F() abort - if 0 - Xpath 1 " X: 0 - else - Xpath 2 " X: 2 - else " aborts function - Xpath 4 " X: 0 - endif -endfunction - -function! G() abort - if 0 - Xpath 8 " X: 0 - else - Xpath 16 " X: 16 - elseif 1 " aborts function - Xpath 32 " X: 0 - else - Xpath 64 " X: 0 - endif -endfunction - -function! H() abort - if 0 - Xpath 128 " X: 0 - elseif 0 - Xpath 256 " X: 0 - else - Xpath 512 " X: 512 - else " aborts function - Xpath 1024 " X: 0 - endif -endfunction - -function! I() abort - if 0 - Xpath 2048 " X: 0 - elseif 0 - Xpath 4096 " X: 0 - else - Xpath 8192 " X: 8192 - elseif 1 " aborts function - Xpath 16384 " X: 0 - else - Xpath 32768 " X: 0 - endif -endfunction - -call F() -call G() -call H() -call I() - -delfunction F -delfunction G -delfunction H -delfunction I - -Xcheck 8722 - - -"------------------------------------------------------------------------------- -" Test 17: Nesting of unmatched :if or :endif inside a :while {{{1 -" -" The :while/:endwhile takes precedence in nesting over an unclosed -" :if or an unopened :endif. -"------------------------------------------------------------------------------- - -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 - -let messages = "" - -" While loops inside a function are continued on error. -function! F() - let v:errmsg = "" - XloopINIT 1 16 - let loops = 3 - while loops > 0 - let loops = loops - 1 " 2: 1: 0: - Xloop 1 " X: 1 + 1*16 + 1*16*16 - if (loops == 1) - Xloop 2 " X: 2*16 - XloopNEXT - continue - elseif (loops == 0) - Xloop 4 " X: 4*16*16 - break - elseif 1 - Xloop 8 " X: 8 - XloopNEXT - " endif missing! - endwhile " :endwhile after :if 1 - Xpath 4096 " X: 16*16*16 - if MSG('E171', "Missing :endif") - let g:messages = g:messages . "A" - endif - - let v:errmsg = "" - XloopINIT! 8192 4 - let loops = 2 - while loops > 0 " 2: 1: - XloopNEXT - let loops = loops - 1 - Xloop 1 " X: 8192 + 8192*4 - if 0 - Xloop 2 " X: 0 - " endif missing - endwhile " :endwhile after :if 0 - Xpath 131072 " X: 8192*4*4 - if MSG('E171', "Missing :endif") - let g:messages = g:messages . "B" - endif - - let v:errmsg = "" - XloopINIT 262144 4 - let loops = 2 - while loops > 0 " 2: 1: - let loops = loops - 1 - Xloop 1 " X: 262144 + 262144 * 4 - " if missing! - endif " :endif without :if in while - Xloop 2 " X: 524288 + 524288 * 4 - XloopNEXT - endwhile - Xpath 4194304 " X: 262144*4*4 - if MSG('E580', ":endif without :if") - let g:messages = g:messages . "C" - endif -endfunction - -call F() - -" Error continuation outside a function is at the outermost :endwhile or :endif. -let v:errmsg = "" -XloopINIT! 8388608 4 -let loops = 2 -while loops > 0 " 2: 1: - XloopNEXT - let loops = loops - 1 - Xloop 1 " X: 8388608 + 0 * 4 - if 0 - Xloop 2 " X: 0 - " endif missing! Following :endwhile fails. -endwhile | Xpath 134217728 " X: 0 -Xpath 268435456 " X: 2*8388608*4*4 -if MSG('E171', "Missing :endif") - let messages = g:messages . "D" -endif - -if messages != "ABCD" - Xpath 536870912 " X: 0 - Xout "messages is" messages "instead of ABCD" -endif - -unlet loops messages -delfunction F -delfunction MSG - -Xcheck 285127993 - +" Tests 1 to 17 were moved to test_vimscript.vim +let Xtest = 18 "------------------------------------------------------------------------------- " Test 18: Interrupt (Ctrl-C pressed) {{{1 @@ -1313,140 +1125,8 @@ endif Xcheck 41 - -"------------------------------------------------------------------------------- -" Test 25: Executing :finally clauses on normal control flow {{{1 -" -" Control flow in a :try conditional should always fall through to its -" :finally clause. A :finally clause of a :try conditional inside an -" inactive conditional should never be executed. -"------------------------------------------------------------------------------- - -XpathINIT - -function! F() - let loops = 3 - XloopINIT 1 256 - while loops > 0 " 3: 2: 1: - Xloop 1 " X: 1 + 1*256 + 1*256*256 - if loops >= 2 - try - Xloop 2 " X: 2 + 2*256 - if loops == 2 - try - Xloop 4 " X: 4*256 - finally - Xloop 8 " X: 8*256 - endtry - endif - finally - Xloop 16 " X: 16 + 16*256 - if loops == 2 - try - Xloop 32 " X: 32*256 - finally - Xloop 64 " X: 64*256 - endtry - endif - endtry - endif - Xloop 128 " X: 128 + 128*256 + 128*256*256 - let loops = loops - 1 - XloopNEXT - endwhile - Xpath 16777216 " X: 16777216 -endfunction - -if 1 - try - Xpath 33554432 " X: 33554432 - call F() - Xpath 67108864 " X: 67108864 - finally - Xpath 134217728 " X: 134217728 - endtry -else - try - Xpath 268435456 " X: 0 - finally - Xpath 536870912 " X: 0 - endtry -endif - -delfunction F - -Xcheck 260177811 - - -"------------------------------------------------------------------------------- -" Test 26: Executing :finally clauses after :continue or :break {{{1 -" -" For a :continue or :break dynamically enclosed in a :try/:endtry -" region inside the next surrounding :while/:endwhile, if the -" :continue/:break is before the :finally, the :finally clause is -" executed first. If the :continue/:break is after the :finally, the -" :finally clause is broken (like an :if/:endif region). -"------------------------------------------------------------------------------- - -XpathINIT - -try - let loops = 3 - XloopINIT! 1 32 - while loops > 0 - XloopNEXT - try - try - if loops == 2 " 3: 2: 1: - Xloop 1 " X: 1*32 - let loops = loops - 1 - continue - elseif loops == 1 - Xloop 2 " X: 2*32*32 - break - finish - endif - Xloop 4 " X: 4 - endtry - finally - Xloop 8 " X: 8 + 8*32 + 8*32*32 - endtry - Xloop 16 " X: 16 - let loops = loops - 1 - endwhile - Xpath 32768 " X: 32768 -finally - Xpath 65536 " X: 65536 - let loops = 3 - XloopINIT 131072 16 - while loops > 0 - try - finally - try - if loops == 2 - Xloop 1 " X: 131072*16 - let loops = loops - 1 - XloopNEXT - continue - elseif loops == 1 - Xloop 2 " X: 131072*2*16*16 - break - finish - endif - endtry - Xloop 4 " X: 131072*4 - endtry - Xloop 8 " X: 131072*8 - let loops = loops - 1 - XloopNEXT - endwhile - Xpath 536870912 " X: 536870912 -endtry -Xpath 1073741824 " X: 1073741824 - -unlet loops - -Xcheck 1681500476 +" Tests 25 and 26 were moved to test_trycatch.vim +let Xtest = 27 "------------------------------------------------------------------------------- @@ -1783,252 +1463,8 @@ endif Xcheck 190905173 - -"------------------------------------------------------------------------------- -" Test 32: Remembering the :return value on :finally {{{1 -" -" If a :finally clause is executed due to a :return specifying -" a value, this is the value visible to the caller if not overwritten -" by a new :return in the :finally clause. A :return without a value -" in the :finally clause overwrites with value 0. -"------------------------------------------------------------------------------- - -XpathINIT - -function! F() - try - Xpath 1 " X: 1 - try - Xpath 2 " X: 2 - return "ABCD" - Xpath 4 " X: 0 - finally - Xpath 8 " X: 8 - endtry - Xpath 16 " X: 0 - finally - Xpath 32 " X: 32 - endtry - Xpath 64 " X: 0 -endfunction - -function! G() - try - Xpath 128 " X: 128 - return 8 - Xpath 256 " X: 0 - finally - Xpath 512 " X: 512 - return 16 + strlen(F()) - Xpath 1024 " X: 0 - endtry - Xpath 2048 " X: 0 -endfunction - -function! H() - try - Xpath 4096 " X: 4096 - return 32 - Xpath 8192 " X: 0 - finally - Xpath 16384 " X: 16384 - return - Xpath 32768 " X: 0 - endtry - Xpath 65536 " X: 0 -endfunction - -function! I() - try - Xpath 131072 " X: 131072 - finally - Xpath 262144 " X: 262144 - return G() + H() + 64 - Xpath 524288 " X: 0 - endtry - Xpath 1048576 " X: 0 -endfunction - -let retcode = I() -Xpath 2097152 " X: 2097152 - -if retcode < 0 - Xpath 4194304 " X: 0 -endif -if retcode % 4 - Xpath 8388608 " X: 0 -endif -if (retcode/4) % 2 - Xpath 16777216 " X: 16777216 -endif -if (retcode/8) % 2 - Xpath 33554432 " X: 0 -endif -if (retcode/16) % 2 - Xpath 67108864 " X: 67108864 -endif -if (retcode/32) % 2 - Xpath 134217728 " X: 0 -endif -if (retcode/64) % 2 - Xpath 268435456 " X: 268435456 -endif -if retcode/128 - Xpath 536870912 " X: 0 -endif - -unlet retcode -delfunction F -delfunction G -delfunction H -delfunction I - -Xcheck 354833067 - - -"------------------------------------------------------------------------------- -" Test 33: :return under :execute or user command and :finally {{{1 -" -" A :return command may be executed under an ":execute" or from -" a user command. Executing of :finally clauses and passing through -" the return code works also then. -"------------------------------------------------------------------------------- -XpathINIT - -command! -nargs=? RETURN - \ try | return <args> | finally | return <args> * 2 | endtry - -function! F() - try - RETURN 8 - Xpath 1 " X: 0 - finally - Xpath 2 " X: 2 - endtry - Xpath 4 " X: 0 -endfunction - -function! G() - try - RETURN 32 - Xpath 8 " X: 0 - finally - Xpath 16 " X: 16 - RETURN 128 - Xpath 32 " X: 0 - endtry - Xpath 64 " X: 0 -endfunction - -function! H() - try - execute "try | return 512 | finally | return 1024 | endtry" - Xpath 128 " X: 0 - finally - Xpath 256 " X: 256 - endtry - Xpath 512 " X: 0 -endfunction - -function! I() - try - execute "try | return 2048 | finally | return 4096 | endtry" - Xpath 1024 " X: 0 - finally - Xpath 2048 " X: 2048 - execute "try | return 8192 | finally | return 16384 | endtry" - Xpath 4096 " X: 0 - endtry - Xpath 8192 " X: 0 -endfunction - -function! J() - try - RETURN 32768 - Xpath 16384 " X: 0 - finally - Xpath 32768 " X: 32768 - return - Xpath 65536 " X: 0 - endtry - Xpath 131072 " X: 0 -endfunction - -function! K() - try - execute "try | return 131072 | finally | return 262144 | endtry" - Xpath 262144 " X: 0 - finally - Xpath 524288 " X: 524288 - execute "try | return 524288 | finally | return | endtry" - Xpath 1048576 " X: 0 - endtry - Xpath 2097152 " X: 0 -endfunction - -function! L() - try - return - Xpath 4194304 " X: 0 - finally - Xpath 8388608 " X: 8388608 - RETURN 1048576 - Xpath 16777216 " X: 0 - endtry - Xpath 33554432 " X: 0 -endfunction - -function! M() - try - return - Xpath 67108864 " X: 0 - finally - Xpath 134217728 " X: 134217728 - execute "try | return 4194304 | finally | return 8388608 | endtry" - Xpath 268435456 " X: 0 - endtry - Xpath 536870912 " X: 0 -endfunction - -function! N() - RETURN 16777216 -endfunction - -function! O() - execute "try | return 67108864 | finally | return 134217728 | endtry" -endfunction - -let sum = F() + G() + H() + I() + J() + K() + L() + M() -let expected = 16 + 256 + 1024 + 16384 + 0 + 0 + 2097152 + 8388608 -let sum = sum + N() + O() -let expected = expected + 33554432 + 134217728 - -if sum == expected - Xout "sum = " . sum . " (ok)" -else - Xout "sum = " . sum . ", expected: " . expected -endif - -Xpath 1073741824 " X: 1073741824 - -if sum != expected - " The Xpath command does not accept 2^31 (negative); add explicitly: - let Xpath = Xpath + 2147483648 " X: 0 -endif - -unlet sum expected -delfunction F -delfunction G -delfunction H -delfunction I -delfunction J -delfunction K -delfunction L -delfunction M -delfunction N -delfunction O - -Xcheck 1216907538 +" Tests 32 and 33 were moved to test_trycatch.vim +let Xtest = 34 "------------------------------------------------------------------------------- @@ -2654,643 +2090,8 @@ endif Xcheck 357908480 - -"------------------------------------------------------------------------------- -" Test 41: Skipped :throw finding next command {{{1 -" -" A :throw in an inactive conditional must not hide a following -" command. -"------------------------------------------------------------------------------- - -XpathINIT - -function! F() - Xpath 1 " X: 1 - if 0 | throw "never" | endif | Xpath 2 " X: 2 - Xpath 4 " X: 4 -endfunction - -function! G() - Xpath 8 " X: 8 - while 0 | throw "never" | endwhile | Xpath 16 " X: 16 - Xpath 32 " X: 32 -endfunction - -function H() - Xpath 64 " X: 64 - if 0 | try | throw "never" | endtry | endif | Xpath 128 " X: 128 - Xpath 256 " X: 256 -endfunction - -Xpath 512 " X: 512 - -try - Xpath 1024 " X: 1024 - call F() - Xpath 2048 " X: 2048 -catch /.*/ - Xpath 4096 " X: 0 - Xout v:exception "in" v:throwpoint -endtry - -Xpath 8192 " X: 8192 - -try - Xpath 16384 " X: 16384 - call G() - Xpath 32768 " X: 32768 -catch /.*/ - Xpath 65536 " X: 0 - Xout v:exception "in" v:throwpoint -endtry - -Xpath 131072 " X: 131072 - -try - Xpath 262144 " X: 262144 - call H() - Xpath 524288 " X: 524288 -catch /.*/ - Xpath 1048576 " X: 0 - Xout v:exception "in" v:throwpoint -endtry - -Xpath 2097152 " X: 2097152 - -delfunction F -delfunction G -delfunction H - -Xcheck 3076095 - - -"------------------------------------------------------------------------------- -" Test 42: Catching number and string exceptions {{{1 -" -" When a number is thrown, it is converted to a string exception. -" Numbers and strings may be caught by specifying a regular exception -" as argument to the :catch command. -"------------------------------------------------------------------------------- - -XpathINIT - -try - - try - Xpath 1 " X: 1 - throw 4711 - Xpath 2 " X: 0 - catch /4711/ - Xpath 4 " X: 4 - endtry - - try - Xpath 8 " X: 8 - throw 4711 - Xpath 16 " X: 0 - catch /^4711$/ - Xpath 32 " X: 32 - endtry - - try - Xpath 64 " X: 64 - throw 4711 - Xpath 128 " X: 0 - catch /\d/ - Xpath 256 " X: 256 - endtry - - try - Xpath 512 " X: 512 - throw 4711 - Xpath 1024 " X: 0 - catch /^\d\+$/ - Xpath 2048 " X: 2048 - endtry - - try - Xpath 4096 " X: 4096 - throw "arrgh" - Xpath 8192 " X: 0 - catch /arrgh/ - Xpath 16384 " X: 16384 - endtry - - try - Xpath 32768 " X: 32768 - throw "arrgh" - Xpath 65536 " X: 0 - catch /^arrgh$/ - Xpath 131072 " X: 131072 - endtry - - try - Xpath 262144 " X: 262144 - throw "arrgh" - Xpath 524288 " X: 0 - catch /\l/ - Xpath 1048576 " X: 1048576 - endtry - - try - Xpath 2097152 " X: 2097152 - throw "arrgh" - Xpath 4194304 " X: 0 - catch /^\l\+$/ - Xpath 8388608 " X: 8388608 - endtry - - try - try - Xpath 16777216 " X: 16777216 - throw "ARRGH" - Xpath 33554432 " X: 0 - catch /^arrgh$/ - Xpath 67108864 " X: 0 - endtry - catch /^\carrgh$/ - Xpath 134217728 " X: 134217728 - endtry - - try - Xpath 268435456 " X: 268435456 - throw "" - Xpath 536870912 " X: 0 - catch /^$/ - Xpath 1073741824 " X: 1073741824 - endtry - -catch /.*/ - " The Xpath command does not accept 2^31 (negative); add explicitly: - let Xpath = Xpath + 2147483648 " X: 0 - Xout v:exception "in" v:throwpoint -endtry - -Xcheck 1505155949 - - -"------------------------------------------------------------------------------- -" Test 43: Selecting the correct :catch clause {{{1 -" -" When an exception is thrown and there are multiple :catch clauses, -" the first matching one is taken. -"------------------------------------------------------------------------------- - -XpathINIT - -XloopINIT 1 1024 -let loops = 3 -while loops > 0 - try - if loops == 3 - Xloop 1 " X: 1 - throw "a" - Xloop 2 " X: 0 - elseif loops == 2 - Xloop 4 " X: 4*1024 - throw "ab" - Xloop 8 " X: 0 - elseif loops == 1 - Xloop 16 " X: 16*1024*1024 - throw "abc" - Xloop 32 " X: 0 - endif - catch /abc/ - Xloop 64 " X: 64*1024*1024 - catch /ab/ - Xloop 128 " X: 128*1024 - catch /.*/ - Xloop 256 " X: 256 - catch /a/ - Xloop 512 " X: 0 - endtry - - let loops = loops - 1 - XloopNEXT -endwhile -Xpath 1073741824 " X: 1073741824 - -unlet loops - -Xcheck 1157763329 - - -"------------------------------------------------------------------------------- -" Test 44: Missing or empty :catch patterns {{{1 -" -" A missing or empty :catch pattern means the same as /.*/, that is, -" catches everything. To catch only empty exceptions, /^$/ must be -" used. A :catch with missing, empty, or /.*/ argument also works -" when followed by another command separated by a bar on the same -" line. :catch patterns cannot be specified between ||. But other -" pattern separators can be used instead of //. -"------------------------------------------------------------------------------- - -XpathINIT - -try - try - Xpath 1 " X: 1 - throw "" - catch /^$/ - Xpath 2 " X: 2 - endtry - - try - Xpath 4 " X: 4 - throw "" - catch /.*/ - Xpath 8 " X: 8 - endtry - - try - Xpath 16 " X: 16 - throw "" - catch // - Xpath 32 " X: 32 - endtry - - try - Xpath 64 " X: 64 - throw "" - catch - Xpath 128 " X: 128 - endtry - - try - Xpath 256 " X: 256 - throw "oops" - catch /^$/ - Xpath 512 " X: 0 - catch /.*/ - Xpath 1024 " X: 1024 - endtry - - try - Xpath 2048 " X: 2048 - throw "arrgh" - catch /^$/ - Xpath 4096 " X: 0 - catch // - Xpath 8192 " X: 8192 - endtry - - try - Xpath 16384 " X: 16384 - throw "brrr" - catch /^$/ - Xpath 32768 " X: 0 - catch - Xpath 65536 " X: 65536 - endtry - - try | Xpath 131072 | throw "x" | catch /.*/ | Xpath 262144 | endtry - " X: 131072 + 262144 - - try | Xpath 524288 | throw "y" | catch // | Xpath 1048576 | endtry - " X: 524288 + 1048576 - - while 1 - try - let caught = 0 - let v:errmsg = "" - " Extra try level: if ":catch" without arguments below raises - " a syntax error because it misinterprets the "Xpath" as a pattern, - " let it be caught by the ":catch /.*/" below. - try - try | Xpath 2097152 | throw "z" | catch | Xpath 4194304 | : - endtry " X: 2097152 + 4194304 - endtry - catch /.*/ - let caught = 1 - Xout v:exception "in" v:throwpoint - finally - if $VIMNOERRTHROW && v:errmsg != "" - Xout v:errmsg - endif - if caught || $VIMNOERRTHROW && v:errmsg != "" - Xpath 8388608 " X: 0 - endif - break " discard error for $VIMNOERRTHROW - endtry - endwhile - - let cologne = 4711 - try - try - Xpath 16777216 " X: 16777216 - throw "throw cologne" - " Next lines catches all and throws 4711: - catch |throw cologne| - Xpath 33554432 " X: 0 - endtry - catch /4711/ - Xpath 67108864 " X: 67108864 - endtry - - try - Xpath 134217728 " X: 134217728 - throw "plus" - catch +plus+ - Xpath 268435456 " X: 268435456 - endtry - - Xpath 536870912 " X: 536870912 -catch /.*/ - Xpath 1073741824 " X: 0 - Xout v:exception "in" v:throwpoint -endtry - -unlet! caught cologne - -Xcheck 1031761407 - - -"------------------------------------------------------------------------------- -" Test 45: Catching exceptions from nested :try blocks {{{1 -" -" When :try blocks are nested, an exception is caught by the innermost -" try conditional that has a matching :catch clause. -"------------------------------------------------------------------------------- - -XpathINIT - -XloopINIT 1 1024 -let loops = 3 -while loops > 0 - try - try - try - try - if loops == 3 - Xloop 1 " X: 1 - throw "a" - Xloop 2 " X: 0 - elseif loops == 2 - Xloop 4 " X: 4*1024 - throw "ab" - Xloop 8 " X: 0 - elseif loops == 1 - Xloop 16 " X: 16*1024*1024 - throw "abc" - Xloop 32 " X: 0 - endif - catch /abc/ - Xloop 64 " X: 64*1024*1024 - endtry - catch /ab/ - Xloop 128 " X: 128*1024 - endtry - catch /.*/ - Xloop 256 " X: 256 - endtry - catch /a/ - Xloop 512 " X: 0 - endtry - - let loops = loops - 1 - XloopNEXT -endwhile -Xpath 1073741824 " X: 1073741824 - -unlet loops - -Xcheck 1157763329 - - -"------------------------------------------------------------------------------- -" Test 46: Executing :finally after a :throw in nested :try {{{1 -" -" When an exception is thrown from within nested :try blocks, the -" :finally clauses of the non-catching try conditionals should be -" executed before the matching :catch of the next surrounding :try -" gets the control. If this also has a :finally clause, it is -" executed afterwards. -"------------------------------------------------------------------------------- - -XpathINIT - -let sum = 0 - -try - Xpath 1 " X: 1 - try - Xpath 2 " X: 2 - try - Xpath 4 " X: 4 - try - Xpath 8 " X: 8 - throw "ABC" - Xpath 16 " X: 0 - catch /xyz/ - Xpath 32 " X: 0 - finally - Xpath 64 " X: 64 - if sum != 0 - Xpath 128 " X: 0 - endif - let sum = sum + 1 - endtry - Xpath 256 " X: 0 - catch /123/ - Xpath 512 " X: 0 - catch /321/ - Xpath 1024 " X: 0 - finally - Xpath 2048 " X: 2048 - if sum != 1 - Xpath 4096 " X: 0 - endif - let sum = sum + 2 - endtry - Xpath 8192 " X: 0 - finally - Xpath 16384 " X: 16384 - if sum != 3 - Xpath 32768 " X: 0 - endif - let sum = sum + 4 - endtry - Xpath 65536 " X: 0 -catch /ABC/ - Xpath 131072 " X: 131072 - if sum != 7 - Xpath 262144 " X: 0 - endif - let sum = sum + 8 -finally - Xpath 524288 " X: 524288 - if sum != 15 - Xpath 1048576 " X: 0 - endif - let sum = sum + 16 -endtry -Xpath 65536 " X: 65536 -if sum != 31 - Xpath 131072 " X: 0 -endif - -unlet sum - -Xcheck 739407 - - -"------------------------------------------------------------------------------- -" Test 47: Throwing exceptions from a :catch clause {{{1 -" -" When an exception is thrown from a :catch clause, it should not be -" caught by a :catch of the same :try conditional. After executing -" the :finally clause (if present), surrounding try conditionals -" should be checked for a matching :catch. -"------------------------------------------------------------------------------- - -XpathINIT - -Xpath 1 " X: 1 -try - Xpath 2 " X: 2 - try - Xpath 4 " X: 4 - try - Xpath 8 " X: 8 - throw "x1" - Xpath 16 " X: 0 - catch /x1/ - Xpath 32 " X: 32 - try - Xpath 64 " X: 64 - throw "x2" - Xpath 128 " X: 0 - catch /x1/ - Xpath 256 " X: 0 - catch /x2/ - Xpath 512 " X: 512 - try - Xpath 1024 " X: 1024 - throw "x3" - Xpath 2048 " X: 0 - catch /x1/ - Xpath 4096 " X: 0 - catch /x2/ - Xpath 8192 " X: 0 - finally - Xpath 16384 " X: 16384 - endtry - Xpath 32768 " X: 0 - catch /x3/ - Xpath 65536 " X: 0 - endtry - Xpath 131072 " X: 0 - catch /x1/ - Xpath 262144 " X: 0 - catch /x2/ - Xpath 524288 " X: 0 - catch /x3/ - Xpath 1048576 " X: 0 - finally - Xpath 2097152 " X: 2097152 - endtry - Xpath 4194304 " X: 0 - catch /x1/ - Xpath 8388608 " X: 0 - catch /x2/ - Xpath 16777216 " X: 0 - catch /x3/ - Xpath 33554432 " X: 33554432 - endtry - Xpath 67108864 " X: 67108864 -catch /.*/ - Xpath 134217728 " X: 0 - Xout v:exception "in" v:throwpoint -endtry -Xpath 268435456 " X: 268435456 - -Xcheck 371213935 - - -"------------------------------------------------------------------------------- -" Test 48: Throwing exceptions from a :finally clause {{{1 -" -" When an exception is thrown from a :finally clause, it should not be -" caught by a :cat |