patch 8.1.2246: some tests are still in old style

Problem:    Some tests are still in old style.
Solution:   Change a few tests to new style. (Yegappan Lakshmanan)
diff --git a/src/testdir/test49.vim b/src/testdir/test49.vim
index b6f6f6b..f19b9db 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 @@
 " 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 @@
 
 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 @@
 
 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 @@
 
 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 :catch of the same :try conditional.  Surrounding try
-"	    conditionals should be checked for a matching :catch.  A previously
-"	    thrown exception is discarded.
-"-------------------------------------------------------------------------------
-
-XpathINIT
-
-try
-
-    try
-	try
-	    Xpath 1				" X: 1
-	catch /x1/
-	    Xpath 2				" X: 0
-	finally
-	    Xpath 4				" X: 4
-	    throw "x1"
-	    Xpath 8				" X: 0
-	endtry
-	Xpath 16				" X: 0
-    catch /x1/
-	Xpath 32				" X: 32
-    endtry
-    Xpath 64					" X: 64
-
-    try
-	try
-	    Xpath 128				" X: 128
-	    throw "x2"
-	    Xpath 256				" X: 0
-	catch /x2/
-	    Xpath 512				" X: 512
-	catch /x3/
-	    Xpath 1024				" X: 0
-	finally
-	    Xpath 2048				" X: 2048
-	    throw "x3"
-	    Xpath 4096				" X: 0
-	endtry
-	Xpath 8192				" X: 0
-    catch /x2/
-	Xpath 16384				" X: 0
-    catch /x3/
-	Xpath 32768				" X: 32768
-    endtry
-    Xpath 65536					" X: 65536
-
-    try
-	try
-	    try
-		Xpath 131072			" X: 131072
-		throw "x4"
-		Xpath 262144			" X: 0
-	    catch /x5/
-		Xpath 524288			" X: 0
-	    finally
-		Xpath 1048576			" X: 1048576
-		throw "x5"	" discards "x4"
-		Xpath 2097152			" X: 0
-	    endtry
-	    Xpath 4194304			" X: 0
-	catch /x4/
-	    Xpath 8388608			" X: 0
-	finally
-	    Xpath 16777216			" X: 16777216
-	endtry
-	Xpath 33554432				" X: 0
-    catch /x5/
-	Xpath 67108864				" X: 67108864
-    endtry
-    Xpath 134217728				" X: 134217728
-
-catch /.*/
-    Xpath 268435456				" X: 0
-    Xout v:exception "in" v:throwpoint
-endtry
-Xpath 536870912					" X: 536870912
-
-Xcheck 756255461
+" Tests 41 to 48 were moved to test_trycatch.vim
+let Xtest = 49
 
 
 "-------------------------------------------------------------------------------
@@ -3443,124 +2244,8 @@
 
 Xcheck 363550045
 
-
-"-------------------------------------------------------------------------------
-" Test 51:  Throwing exceptions across :execute and user commands	    {{{1
-"
-"	    A :throw command may be executed under an ":execute" or from
-"	    a user command.
-"-------------------------------------------------------------------------------
-
-XpathINIT
-
-command! -nargs=? THROW1    throw <args> | throw 1
-command! -nargs=? THROW2    try | throw <args> | endtry | throw 2
-command! -nargs=? THROW3    try | throw 3 | catch /3/ | throw <args> | endtry
-command! -nargs=? THROW4    try | throw 4 | finally   | throw <args> | endtry
-
-try
-
-    try
-	try
-	    Xpath 1				" X: 1
-	    THROW1 "A"
-	catch /A/
-	    Xpath 2				" X: 2
-	endtry
-    catch /1/
-	Xpath 4					" X: 0
-    endtry
-
-    try
-	try
-	    Xpath 8				" X: 8
-	    THROW2 "B"
-	catch /B/
-	    Xpath 16				" X: 16
-	endtry
-    catch /2/
-	Xpath 32				" X: 0
-    endtry
-
-    try
-	try
-	    Xpath 64				" X: 64
-	    THROW3 "C"
-	catch /C/
-	    Xpath 128				" X: 128
-	endtry
-    catch /3/
-	Xpath 256				" X: 0
-    endtry
-
-    try
-	try
-	    Xpath 512				" X: 512
-	    THROW4 "D"
-	catch /D/
-	    Xpath 1024				" X: 1024
-	endtry
-    catch /4/
-	Xpath 2048				" X: 0
-    endtry
-
-    try
-	try
-	    Xpath 4096				" X: 4096
-	    execute 'throw "E" | throw 5'
-	catch /E/
-	    Xpath 8192				" X: 8192
-	endtry
-    catch /5/
-	Xpath 16384				" X: 0
-    endtry
-
-    try
-	try
-	    Xpath 32768				" X: 32768
-	    execute 'try | throw "F" | endtry | throw 6'
-	catch /F/
-	    Xpath 65536				" X: 65536
-	endtry
-    catch /6/
-	Xpath 131072				" X: 0
-    endtry
-
-    try
-	try
-	    Xpath 262144			" X: 262144
-	    execute'try | throw 7 | catch /7/ | throw "G" | endtry'
-	catch /G/
-	    Xpath 524288			" X: 524288
-	endtry
-    catch /7/
-	Xpath 1048576				" X: 0
-    endtry
-
-    try
-	try
-	    Xpath 2097152			" X: 2097152
-	    execute 'try | throw 8 | finally   | throw "H" | endtry'
-	catch /H/
-	    Xpath 4194304			" X: 4194304
-	endtry
-    catch /8/
-	Xpath 8388608				" X: 0
-    endtry
-
-catch /.*/
-    Xpath 16777216				" X: 0
-    Xout v:exception "in" v:throwpoint
-endtry
-
-Xpath 33554432					" X: 33554432
-
-delcommand THROW1
-delcommand THROW2
-delcommand THROW3
-delcommand THROW4
-
-Xcheck 40744667
+" Test 51 was moved to test_trycatch.vim
+let Xtest = 52
 
 
 "-------------------------------------------------------------------------------
@@ -6227,954 +4912,8 @@
 
 Xcheck 212514423
 
-
-"-------------------------------------------------------------------------------
-" Test 69:  :throw across :if, :elseif, :while				    {{{1
-"
-"	    On an :if, :elseif, or :while command, an exception might be thrown
-"	    during evaluation of the expression to test.  The exception can be
-"	    caught by the script.
-"-------------------------------------------------------------------------------
-
-XpathINIT
-
-XloopINIT! 1 2
-
-function! THROW(x)
-    XloopNEXT
-    Xloop 1					" X: 1 + 2 + 4
-    throw a:x
-endfunction
-
-try
-
-    try
-	Xpath 8					" X: 8
-	if 4711 == THROW("if") + 111
-	    Xpath 16				" X: 0
-	else
-	    Xpath 32				" X: 0
-	endif
-	Xpath 64				" X: 0
-    catch /^if$/
-	Xpath 128				" X: 128
-    catch /.*/
-	Xpath 256				" X: 0
-	Xout "if:" v:exception "in" v:throwpoint
-    endtry
-
-    try
-	Xpath 512				" X: 512
-	if 4711 == 4 + 7 + 1 + 1
-	    Xpath 1024				" X: 0
-	elseif 4711 == THROW("elseif") + 222
-	    Xpath 2048				" X: 0
-	else
-	    Xpath 4096				" X: 0
-	endif
-	Xpath 8192				" X: 0
-    catch /^elseif$/
-	Xpath 16384				" X: 16384
-    catch /.*/
-	Xpath 32768				" X: 0
-	Xout "elseif:" v:exception "in" v:throwpoint
-    endtry
-
-    try
-	Xpath 65536				" X: 65536
-	while 4711 == THROW("while") + 4711
-	    Xpath 131072			" X: 0
-	    break
-	endwhile
-	Xpath 262144				" X: 0
-    catch /^while$/
-	Xpath 524288				" X: 524288
-    catch /.*/
-	Xpath 1048576				" X: 0
-	Xout "while:" v:exception "in" v:throwpoint
-    endtry
-
-catch /^0$/	    " default return value
-    Xpath 2097152				" X: 0
-    Xout v:throwpoint
-catch /.*/
-    Xout v:exception "in" v:throwpoint
-    Xpath 4194304				" X: 0
-endtry
-
-Xpath 8388608					" X: 8388608
-
-delfunction THROW
-
-Xcheck 8995471
-
-
-"-------------------------------------------------------------------------------
-" Test 70:  :throw across :return or :throw				    {{{1
-"
-"	    On a :return or :throw command, an exception might be thrown during
-"	    evaluation of the expression to return or throw, respectively.  The
-"	    exception can be caught by the script.
-"-------------------------------------------------------------------------------
-
-XpathINIT
-
-let taken = ""
-
-function! THROW(x, n)
-    let g:taken = g:taken . "T" . a:n
-    throw a:x
-endfunction
-
-function! F(x, y, n)
-    let g:taken = g:taken . "F" . a:n
-    return a:x + THROW(a:y, a:n)
-endfunction
-
-function! G(x, y, n)
-    let g:taken = g:taken . "G" . a:n
-    throw a:x . THROW(a:y, a:n)
-    return a:x
-endfunction
-
-try
-    try
-	Xpath 1					" X: 1
-	call F(4711, "return", 1)
-	Xpath 2					" X: 0
-    catch /^return$/
-	Xpath 4					" X: 4
-    catch /.*/
-	Xpath 8					" X: 0
-	Xout "return:" v:exception "in" v:throwpoint
-    endtry
-
-    try
-	Xpath 16				" X: 16
-	let var = F(4712, "return-var", 2)
-	Xpath 32				" X: 0
-    catch /^return-var$/
-	Xpath 64				" X: 64
-    catch /.*/
-	Xpath 128				" X: 0
-	Xout "return-var:" v:exception "in" v:throwpoint
-    finally
-	unlet! var
-    endtry
-
-    try
-	Xpath 256				" X: 256
-	throw "except1" . THROW("throw1", 3)
-	Xpath 512				" X: 0
-    catch /^except1/
-	Xpath 1024				" X: 0
-    catch /^throw1$/
-	Xpath 2048				" X: 2048
-    catch /.*/
-	Xpath 4096				" X: 0
-	Xout "throw1:" v:exception "in" v:throwpoint
-    endtry
-
-    try
-	Xpath 8192				" X: 8192
-	call G("except2", "throw2", 4)
-	Xpath 16384				" X: 0
-    catch /^except2/
-	Xpath 32768				" X: 0
-    catch /^throw2$/
-	Xpath 65536				" X: 65536
-    catch /.*/
-	Xpath 131072				" X: 0
-	Xout "throw2:" v:exception "in" v:throwpoint
-    endtry
-
-    try
-	Xpath 262144				" X: 262144
-	let var = G("except3", "throw3", 5)
-	Xpath 524288				" X: 0
-    catch /^except3/
-	Xpath 1048576				" X: 0
-    catch /^throw3$/
-	Xpath 2097152				" X: 2097152
-    catch /.*/
-	Xpath 4194304				" X: 0
-	Xout "throw3:" v:exception "in" v:throwpoint
-    finally
-	unlet! var
-    endtry
-
-    let expected = "F1T1F2T2T3G4T4G5T5"
-    if taken != expected
-	Xpath 8388608				" X: 0
-	Xout "'taken' is" taken "instead of" expected
-    endif
-
-catch /^0$/	    " default return value
-    Xpath 16777216				" X: 0
-    Xout v:throwpoint
-catch /.*/
-    Xpath 33554432				" X: 0
-    Xout v:exception "in" v:throwpoint
-endtry
-
-Xpath 67108864					" X: 67108864
-
-unlet taken expected
-delfunction THROW
-delfunction F
-delfunction G
-
-Xcheck 69544277
-
-
-"-------------------------------------------------------------------------------
-" Test 71:  :throw across :echo variants and :execute			    {{{1
-"
-"	    On an :echo, :echon, :echomsg, :echoerr, or :execute command, an
-"	    exception might be thrown during evaluation of the arguments to
-"	    be displayed or executed as a command, respectively.  Any following
-"	    arguments are not evaluated, then.  The exception can be caught by
-"	    the script.
-"-------------------------------------------------------------------------------
-
-XpathINIT
-
-let taken = ""
-
-function! THROW(x, n)
-    let g:taken = g:taken . "T" . a:n
-    throw a:x
-endfunction
-
-function! F(n)
-    let g:taken = g:taken . "F" . a:n
-    return "F" . a:n
-endfunction
-
-try
-    try
-	Xpath 1					" X: 1
-	echo "echo" . THROW("echo-except", 1) F(1)
-	Xpath 2					" X: 0
-    catch /^echo-except$/
-	Xpath 4					" X: 4
-    catch /.*/
-	Xpath 8					" X: 0
-	Xout "echo:" v:exception "in" v:throwpoint
-    endtry
-
-    try
-	Xpath 16				" X: 16
-	echon "echon" . THROW("echon-except", 2) F(2)
-	Xpath 32				" X: 0
-    catch /^echon-except$/
-	Xpath 64				" X: 64
-    catch /.*/
-	Xpath 128				" X: 0
-	Xout "echon:" v:exception "in" v:throwpoint
-    endtry
-
-    try
-	Xpath 256				" X: 256
-	echomsg "echomsg" . THROW("echomsg-except", 3) F(3)
-	Xpath 512				" X: 0
-    catch /^echomsg-except$/
-	Xpath 1024				" X: 1024
-    catch /.*/
-	Xpath 2048				" X: 0
-	Xout "echomsg:" v:exception "in" v:throwpoint
-    endtry
-
-    try
-	Xpath 4096				" X: 4096
-	echoerr "echoerr" . THROW("echoerr-except", 4) F(4)
-	Xpath 8192				" X: 0
-    catch /^echoerr-except$/
-	Xpath 16384				" X: 16384
-    catch /Vim/
-	Xpath 32768				" X: 0
-    catch /echoerr/
-	Xpath 65536				" X: 0
-    catch /.*/
-	Xpath 131072				" X: 0
-	Xout "echoerr:" v:exception "in" v:throwpoint
-    endtry
-
-    try
-	Xpath 262144				" X: 262144
-	execute "echo 'execute" . THROW("execute-except", 5) F(5) "'"
-	Xpath 524288				" X: 0
-    catch /^execute-except$/
-	Xpath 1048576				" X: 1048576
-    catch /.*/
-	Xpath 2097152				" X: 0
-	Xout "execute:" v:exception "in" v:throwpoint
-    endtry
-
-    let expected = "T1T2T3T4T5"
-    if taken != expected
-	Xpath 4194304				" X: 0
-	Xout "'taken' is" taken "instead of" expected
-    endif
-
-catch /^0$/	    " default return value
-    Xpath 8388608				" X: 0
-    Xout v:throwpoint
-catch /.*/
-    Xpath 16777216				" X: 0
-    Xout v:exception "in" v:throwpoint
-endtry
-
-Xpath 33554432					" X: 33554432
-
-unlet taken expected
-delfunction THROW
-delfunction F
-
-Xcheck 34886997
-
-
-"-------------------------------------------------------------------------------
-" Test 72:  :throw across :let or :unlet				    {{{1
-"
-"	    On a :let command, an exception might be thrown during evaluation
-"	    of the expression to assign.  On an :let or :unlet command, the
-"	    evaluation of the name of the variable to be assigned or list or
-"	    deleted, respectively, may throw an exception.  Any following
-"	    arguments are not evaluated, then.  The exception can be caught by
-"	    the script.
-"-------------------------------------------------------------------------------
-
-XpathINIT
-
-let throwcount = 0
-
-function! THROW(x)
-    let g:throwcount = g:throwcount + 1
-    throw a:x
-endfunction
-
-try
-    try
-	let $VAR = "old_value"
-	Xpath 1					" X: 1
-	let $VAR = "let(" . THROW("var") . ")"
-	Xpath 2					" X: 0
-    catch /^var$/
-	Xpath 4					" X: 4
-    finally
-	if $VAR != "old_value"
-	    Xpath 8				" X: 0
-	endif
-    endtry
-
-    try
-	let @a = "old_value"
-	Xpath 16				" X: 16
-	let @a = "let(" . THROW("reg") . ")"
-	Xpath 32				" X: 0
-    catch /^reg$/
-	try
-	    Xpath 64				" X: 64
-	    let @A = "let(" . THROW("REG") . ")"
-	    Xpath 128				" X: 0
-	catch /^REG$/
-	    Xpath 256				" X: 256
-	endtry
-    finally
-	if @a != "old_value"
-	    Xpath 512				" X: 0
-	endif
-	if @A != "old_value"
-	    Xpath 1024				" X: 0
-	endif
-    endtry
-
-    try
-	let saved_gpath = &g:path
-	let saved_lpath = &l:path
-	Xpath 2048				" X: 2048
-	let &path = "let(" . THROW("opt") . ")"
-	Xpath 4096				" X: 0
-    catch /^opt$/
-	try
-	    Xpath 8192				" X: 8192
-	    let &g:path = "let(" . THROW("gopt") . ")"
-	    Xpath 16384				" X: 0
-	catch /^gopt$/
-	    try
-		Xpath 32768			" X: 32768
-		let &l:path = "let(" . THROW("lopt") . ")"
-		Xpath 65536			" X: 0
-	    catch /^lopt$/
-		Xpath 131072			" X: 131072
-	    endtry
-	endtry
-    finally
-	if &g:path != saved_gpath || &l:path != saved_lpath
-	    Xpath 262144			" X: 0
-	endif
-	let &g:path = saved_gpath
-	let &l:path = saved_lpath
-    endtry
-
-    unlet! var1 var2 var3
-
-    try
-	Xpath 524288				" X: 524288
-	let var1 = "let(" . THROW("var1") . ")"
-	Xpath 1048576				" X: 0
-    catch /^var1$/
-	Xpath 2097152				" X: 2097152
-    finally
-	if exists("var1")
-	    Xpath 4194304			" X: 0
-	endif
-    endtry
-
-    try
-	let var2 = "old_value"
-	Xpath 8388608				" X: 8388608
-	let var2 = "let(" . THROW("var2"). ")"
-	Xpath 16777216				" X: 0
-    catch /^var2$/
-	Xpath 33554432				" X: 33554432
-    finally
-	if var2 != "old_value"
-	    Xpath 67108864			" X: 0
-	endif
-    endtry
-
-    try
-	Xpath 134217728				" X: 134217728
-	let var{THROW("var3")} = 4711
-	Xpath 268435456				" X: 0
-    catch /^var3$/
-	Xpath 536870912				" X: 536870912
-    endtry
-
-    let addpath = ""
-
-    function ADDPATH(p)
-	let g:addpath = g:addpath . a:p
-    endfunction
-
-    try
-	call ADDPATH("T1")
-	let var{THROW("var4")} var{ADDPATH("T2")} | call ADDPATH("T3")
-	call ADDPATH("T4")
-    catch /^var4$/
-	call ADDPATH("T5")
-    endtry
-
-    try
-	call ADDPATH("T6")
-	unlet var{THROW("var5")} var{ADDPATH("T7")} | call ADDPATH("T8")
-	call ADDPATH("T9")
-    catch /^var5$/
-	call ADDPATH("T10")
-    endtry
-
-    if addpath != "T1T5T6T10" || throwcount != 11
-	throw "addpath: " . addpath . ", throwcount: " . throwcount
-    endif
-
-    Xpath 1073741824				" X: 1073741824
-
-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
-
-unlet! var1 var2 var3 addpath throwcount
-delfunction THROW
-
-Xcheck 1789569365
-
-
-"-------------------------------------------------------------------------------
-" Test 73:  :throw across :function, :delfunction			    {{{1
-"
-"	    The :function and :delfunction commands may cause an expression
-"	    specified in braces to be evaluated.  During evaluation, an
-"	    exception might be thrown.  The exception can be caught by the
-"	    script.
-"-------------------------------------------------------------------------------
-
-XpathINIT
-
-let taken = ""
-
-function! THROW(x, n)
-    let g:taken = g:taken . "T" . a:n
-    throw a:x
-endfunction
-
-function! EXPR(x, n)
-    let g:taken = g:taken . "E" . a:n
-    if a:n % 2 == 0
-	call THROW(a:x, a:n)
-    endif
-    return 2 - a:n % 2
-endfunction
-
-try
-    try
-	" Define function.
-	Xpath 1					" X: 1
-	function! F0()
-	endfunction
-	Xpath 2					" X: 2
-	function! F{EXPR("function-def-ok", 1)}()
-	endfunction
-	Xpath 4					" X: 4
-	function! F{EXPR("function-def", 2)}()
-	endfunction
-	Xpath 8					" X: 0
-    catch /^function-def-ok$/
-	Xpath 16				" X: 0
-    catch /^function-def$/
-	Xpath 32				" X: 32
-    catch /.*/
-	Xpath 64				" X: 0
-	Xout "def:" v:exception "in" v:throwpoint
-    endtry
-
-    try
-	" List function.
-	Xpath 128				" X: 128
-	function F0
-	Xpath 256				" X: 256
-	function F{EXPR("function-lst-ok", 3)}
-	Xpath 512				" X: 512
-	function F{EXPR("function-lst", 4)}
-	Xpath 1024				" X: 0
-    catch /^function-lst-ok$/
-	Xpath 2048				" X: 0
-    catch /^function-lst$/
-	Xpath 4096				" X: 4096
-    catch /.*/
-	Xpath 8192				" X: 0
-	Xout "lst:" v:exception "in" v:throwpoint
-    endtry
-
-    try
-	" Delete function
-	Xpath 16384				" X: 16384
-	delfunction F0
-	Xpath 32768				" X: 32768
-	delfunction F{EXPR("function-del-ok", 5)}
-	Xpath 65536				" X: 65536
-	delfunction F{EXPR("function-del", 6)}
-	Xpath 131072				" X: 0
-    catch /^function-del-ok$/
-	Xpath 262144				" X: 0
-    catch /^function-del$/
-	Xpath 524288				" X: 524288
-    catch /.*/
-	Xpath 1048576				" X: 0
-	Xout "del:" v:exception "in" v:throwpoint
-    endtry
-
-    let expected = "E1E2T2E3E4T4E5E6T6"
-    if taken != expected
-	Xpath 2097152				" X: 0
-	Xout "'taken' is" taken "instead of" expected
-    endif
-
-catch /.*/
-    Xpath 4194304				" X: 0
-    Xout v:exception "in" v:throwpoint
-endtry
-
-Xpath 8388608					" X: 8388608
-
-unlet taken expected
-delfunction THROW
-delfunction EXPR
-
-Xcheck 9032615
-
-
-"-------------------------------------------------------------------------------
-" Test 74:  :throw across builtin functions and commands		    {{{1
-"
-"	    Some functions like exists(), searchpair() take expression
-"	    arguments, other functions or commands like substitute() or
-"	    :substitute cause an expression (specified in the regular
-"	    expression) to be evaluated.  During evaluation an exception
-"	    might be thrown.  The exception can be caught by the script.
-"-------------------------------------------------------------------------------
-
-XpathINIT
-
-let taken = ""
-
-function! THROW(x, n)
-    let g:taken = g:taken . "T" . a:n
-    throw a:x
-endfunction
-
-function! EXPR(x, n)
-    let g:taken = g:taken . "E" . a:n
-    call THROW(a:x . a:n, a:n)
-    return "EXPR"
-endfunction
-
-function! SKIP(x, n)
-    let g:taken = g:taken . "S" . a:n . "(" . line(".")
-    let theline = getline(".")
-    if theline =~ "skip"
-	let g:taken = g:taken . "s)"
-	return 1
-    elseif theline =~ "throw"
-	let g:taken = g:taken . "t)"
-	call THROW(a:x . a:n, a:n)
-    else
-	let g:taken = g:taken . ")"
-	return 0
-    endif
-endfunction
-
-function! SUBST(x, n)
-    let g:taken = g:taken . "U" . a:n . "(" . line(".")
-    let theline = getline(".")
-    if theline =~ "not"	    " SUBST() should not be called for this line
-	let g:taken = g:taken . "n)"
-	call THROW(a:x . a:n, a:n)
-    elseif theline =~ "throw"
-	let g:taken = g:taken . "t)"
-	call THROW(a:x . a:n, a:n)
-    else
-	let g:taken = g:taken . ")"
-	return "replaced"
-    endif
-endfunction
-
-try
-    try
-	Xpath 1					" X: 1
-	let result = exists('*{EXPR("exists", 1)}')
-	Xpath 2					" X: 0
-    catch /^exists1$/
-	Xpath 4					" X: 4
-	try
-	    let result = exists('{EXPR("exists", 2)}')
-	    Xpath 8				" X: 0
-	catch /^exists2$/
-	    Xpath 16				" X: 16
-	catch /.*/
-	    Xpath 32				" X: 0
-	    Xout "exists2:" v:exception "in" v:throwpoint
-	endtry
-    catch /.*/
-	Xpath 64				" X: 0
-	Xout "exists1:" v:exception "in" v:throwpoint
-    endtry
-
-    try
-	let file = tempname()
-	exec "edit" file
-	insert
-begin
-    xx
-middle 3
-    xx
-middle 5 skip
-    xx
-middle 7 throw
-    xx
-end
-.
-	normal! gg
-	Xpath 128				" X: 128
-	let result =
-	    \ searchpair("begin", "middle", "end", '', 'SKIP("searchpair", 3)')
-	Xpath 256				" X: 256
-	let result =
-	    \ searchpair("begin", "middle", "end", '', 'SKIP("searchpair", 4)')
-	Xpath 512				" X: 0
-	let result =
-	    \ searchpair("begin", "middle", "end", '', 'SKIP("searchpair", 5)')
-	Xpath 1024				" X: 0
-    catch /^searchpair[35]$/
-	Xpath 2048				" X: 0
-    catch /^searchpair4$/
-	Xpath 4096				" X: 4096
-    catch /.*/
-	Xpath 8192				" X: 0
-	Xout "searchpair:" v:exception "in" v:throwpoint
-    finally
-	bwipeout!
-	call delete(file)
-    endtry
-
-    try
-	let file = tempname()
-	exec "edit" file
-	insert
-subst 1
-subst 2
-not
-subst 4
-subst throw
-subst 6
-.
-	normal! gg
-	Xpath 16384				" X: 16384
-	1,2substitute/subst/\=SUBST("substitute", 6)/
-	try
-	    Xpath 32768				" X: 32768
-	    try
-		let v:errmsg = ""
-		3substitute/subst/\=SUBST("substitute", 7)/
-	    finally
-		if v:errmsg != ""
-		    " If exceptions are not thrown on errors, fake the error
-		    " exception in order to get the same execution path.
-		    throw "faked Vim(substitute)"
-		endif
-	    endtry
-	catch /Vim(substitute)/	    " Pattern not found ('e' flag missing)
-	    Xpath 65536				" X: 65536
-	    3substitute/subst/\=SUBST("substitute", 8)/e
-	    Xpath 131072			" X: 131072
-	endtry
-	Xpath 262144				" X: 262144
-	4,6substitute/subst/\=SUBST("substitute", 9)/
-	Xpath 524288				" X: 0
-    catch /^substitute[678]/
-	Xpath 1048576				" X: 0
-    catch /^substitute9/
-	Xpath 2097152				" X: 2097152
-    finally
-	bwipeout!
-	call delete(file)
-    endtry
-
-    try
-	Xpath 4194304				" X: 4194304
-	let var = substitute("sub", "sub", '\=THROW("substitute()y", 10)', '')
-	Xpath 8388608				" X: 0
-    catch /substitute()y/
-	Xpath 16777216				" X: 16777216
-    catch /.*/
-	Xpath 33554432				" X: 0
-	Xout "substitute()y:" v:exception "in" v:throwpoint
-    endtry
-
-    try
-	Xpath 67108864				" X: 67108864
-	let var = substitute("not", "sub", '\=THROW("substitute()n", 11)', '')
-	Xpath 134217728				" X: 134217728
-    catch /substitute()n/
-	Xpath 268435456				" X: 0
-    catch /.*/
-	Xpath 536870912				" X: 0
-	Xout "substitute()n:" v:exception "in" v:throwpoint
-    endtry
-
-    let expected = "E1T1E2T2S3(3)S4(5s)S4(7t)T4U6(1)U6(2)U9(4)U9(5t)T9T10"
-    if taken != expected
-	Xpath 1073741824			" X: 0
-	Xout "'taken' is" taken "instead of" expected
-    endif
-
-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
-
-unlet result var taken expected
-delfunction THROW
-delfunction EXPR
-delfunction SKIP
-delfunction SUBST
-
-Xcheck 224907669
-
-
-"-------------------------------------------------------------------------------
-" Test 75:  Errors in builtin functions.				    {{{1
-"
-"	    On an error in a builtin function called inside a :try/:endtry
-"	    region, the evaluation of the expression calling that function and
-"	    the command containing that expression are abandoned.  The error can
-"	    be caught as an exception.
-"
-"	    A simple :call of the builtin function is a trivial case.  If the
-"	    builtin function is called in the argument list of another function,
-"	    no further arguments are evaluated, and the other function is not
-"	    executed.  If the builtin function is called from the argument of
-"	    a :return command, the :return command is not executed.  If the
-"	    builtin function is called from the argument of a :throw command,
-"	    the :throw command is not executed.  The evaluation of the
-"	    expression calling the builtin function is abandoned.
-"-------------------------------------------------------------------------------
-
-XpathINIT
-
-function! F1(arg1)
-    Xpath 1					" X: 0
-endfunction
-
-function! F2(arg1, arg2)
-    Xpath 2					" X: 0
-endfunction
-
-function! G()
-    Xpath 4					" X: 0
-endfunction
-
-function! H()
-    Xpath 8					" X: 0
-endfunction
-
-function! R()
-    while 1
-	try
-	    let caught = 0
-	    let v:errmsg = ""
-	    Xpath 16				" X: 16
-	    return append(1, "s")
-	catch /E21/
-	    let caught = 1
-	catch /.*/
-	    Xpath 32				" X: 0
-	finally
-	    Xpath 64				" X: 64
-	    if caught || $VIMNOERRTHROW && v:errmsg =~ 'E21'
-		Xpath 128			" X: 128
-	    endif
-	    break		" discard error for $VIMNOERRTHROW
-	endtry
-    endwhile
-    Xpath 256					" X: 256
-endfunction
-
-try
-    set noma	" let append() fail with "E21"
-
-    while 1
-	try
-	    let caught = 0
-	    let v:errmsg = ""
-	    Xpath 512				" X: 512
-	    call append(1, "s")
-	catch /E21/
-	    let caught = 1
-	catch /.*/
-	    Xpath 1024				" X: 0
-	finally
-	    Xpath 2048				" X: 2048
-	    if caught || $VIMNOERRTHROW && v:errmsg =~ 'E21'
-		Xpath 4096			" X: 4096
-	    endif
-	    break		" discard error for $VIMNOERRTHROW
-	endtry
-    endwhile
-
-    while 1
-	try
-	    let caught = 0
-	    let v:errmsg = ""
-	    Xpath 8192				" X: 8192
-	    call F1('x' . append(1, "s"))
-	catch /E21/
-	    let caught = 1
-	catch /.*/
-	    Xpath 16384				" X: 0
-	finally
-	    Xpath 32768				" X: 32768
-	    if caught || $VIMNOERRTHROW && v:errmsg =~ 'E21'
-		Xpath 65536			" X: 65536
-	    endif
-	    break		" discard error for $VIMNOERRTHROW
-	endtry
-    endwhile
-
-    while 1
-	try
-	    let caught = 0
-	    let v:errmsg = ""
-	    Xpath 131072			" X: 131072
-	    call F2('x' . append(1, "s"), G())
-	catch /E21/
-	    let caught = 1
-	catch /.*/
-	    Xpath 262144			" X: 0
-	finally
-	    Xpath 524288			" X: 524288
-	    if caught || $VIMNOERRTHROW && v:errmsg =~ 'E21'
-		Xpath 1048576			" X: 1048576
-	    endif
-	    break		" discard error for $VIMNOERRTHROW
-	endtry
-    endwhile
-
-    call R()
-
-    while 1
-	try
-	    let caught = 0
-	    let v:errmsg = ""
-	    Xpath 2097152			" X: 2097152
-	    throw "T" . append(1, "s")
-	catch /E21/
-	    let caught = 1
-	catch /^T.*/
-	    Xpath 4194304			" X: 0
-	catch /.*/
-	    Xpath 8388608			" X: 0
-	finally
-	    Xpath 16777216			" X: 16777216
-	    if caught || $VIMNOERRTHROW && v:errmsg =~ 'E21'
-		Xpath 33554432			" X: 33554432
-	    endif
-	    break		" discard error for $VIMNOERRTHROW
-	endtry
-    endwhile
-
-    while 1
-	try
-	    let caught = 0
-	    let v:errmsg = ""
-	    Xpath 67108864			" X: 67108864
-	    let x = "a"
-	    let x = x . "b" . append(1, "s") . H()
-	catch /E21/
-	    let caught = 1
-	catch /.*/
-	    Xpath 134217728			" X: 0
-	finally
-	    Xpath 268435456			" X: 268435456
-	    if caught || $VIMNOERRTHROW && v:errmsg =~ 'E21'
-		Xpath 536870912			" X: 536870912
-	    endif
-	    if x == "a"
-		Xpath 1073741824		" X: 1073741824
-	    endif
-	    break		" discard error for $VIMNOERRTHROW
-	endtry
-    endwhile
-catch /.*/
-    " The Xpath command does not accept 2^31 (negative); add explicitly:
-    let Xpath = Xpath + 2147483648		" X: 0
-    Xout v:exception "in" v:throwpoint
-finally
-    set ma&
-endtry
-
-unlet! caught x
-delfunction F1
-delfunction F2
-delfunction G
-delfunction H
-delfunction R
-
-Xcheck 2000403408
+" Tests 69 to 75 were moved to test_trycatch.vim
+let Xtest = 76
 
 
 "-------------------------------------------------------------------------------
@@ -8780,36 +6519,9 @@
 Xout  "No Crash for vimgrep on BufUnload"
 Xcheck 0 
 
-"-------------------------------------------------------------------------------
-" Test 87   using (expr) ? funcref : funcref				    {{{1
-"
-"	    Vim needs to correctly parse the funcref and even when it does
-"	    not execute the funcref, it needs to consume the trailing ()
-"-------------------------------------------------------------------------------
+" Test 87 was moved to test_vimscript.vim
+let Xtest = 88
 
-XpathINIT
-
-func Add2(x1, x2)
-    return a:x1 + a:x2
-endfu
-
-func GetStr()
-    return "abcdefghijklmnopqrstuvwxyp"
-endfu
-
-echo function('Add2')(2,3)
-
-Xout 1 ? function('Add2')(1,2) : function('Add2')(2,3)
-Xout 0 ? function('Add2')(1,2) : function('Add2')(2,3)
-" Make sure, GetStr() still works.
-Xout GetStr()[0:10]
-
-
-delfunction GetStr
-delfunction Add2
-Xout  "Successfully executed funcref Add2"
-
-Xcheck 0 
 
 "-------------------------------------------------------------------------------
 " Test 88:  $VIMNOERRTHROW and $VIMNOINTTHROW support			    {{{1