summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBram Moolenaar <Bram@vim.org>2019-11-03 16:17:26 +0100
committerBram Moolenaar <Bram@vim.org>2019-11-03 16:17:26 +0100
commit1f068233c101ecf5966e6df14853fe68f08175a7 (patch)
tree3d81492fbb6acffd26fe69b81ddc124685e6bcc3
parent2f7b7b1e123d505637d21e0df28eb9e92667479c (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.mak2
-rw-r--r--src/testdir/test49.ok28
-rw-r--r--src/testdir/test49.vim2318
-rw-r--r--src/testdir/test_trycatch.vim1977
-rw-r--r--src/testdir/test_vimscript.vim196
-rw-r--r--src/version.c2
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