v9.CheckSourceSuccess(lines)
enddef
+" Test for using too many nested blocks
+def Test_too_many_nested_blocks()
+ var lines = ['vim9script']
+ lines += repeat(['{'], 51) + ['echo "Hello"'] + repeat(['}'], 51)
+ v9.CheckSourceFailure(lines, 'E579: Block nesting too deep: {')
+enddef
+
func g:NoSuchFunc()
echo 'none'
endfunc
call system(cmd)
endfunc
+" Test for impact of silent! on an exception {{{1
func Test_exception_silent()
XpathINIT
let lines =<< trim END
call RunInNewVim(lines, verify)
endfunc
+" Test for an error message starting with "Vim E123: " {{{1
+func Test_skip_prefix_in_exception()
+ let emsg = ''
+ try
+ echoerr "Vim E123:"
+ catch
+ let emsg = v:exception
+ endtry
+ call assert_equal('Vim(echoerr):Vim E123:', emsg)
+
+ let emsg = ''
+ try
+ echoerr "Vim E123: abc"
+ catch
+ let emsg = v:exception
+ endtry
+ call assert_equal('Vim(echoerr):E123: abc', emsg)
+endfunc
+
+" Test for try/except messages displayed with 'verbose' level set to 13 {{{1
+func Test_verbose_try_except_messages()
+ let msgs = ''
+ redir => msgs
+ set verbose=13
+ try
+ echoerr 'foo'
+ catch
+ echo v:exception
+ endtry
+ set verbose=0
+ redir END
+ let expected =<< trim END
+ Exception thrown: Vim(echoerr):foo
+
+ Exception caught: Vim(echoerr):foo
+
+ Vim(echoerr):foo
+ Exception finished: Vim(echoerr):foo
+ END
+ call assert_equal(expected, msgs->split("\n"))
+endfunc
+
+" Test for trailing characters after a catch pattern {{{1
+func Test_catch_pattern_trailing_chars()
+ let lines =<< trim END
+ try
+ echoerr 'foo'
+ catch /foo/xxx
+ echo 'caught foo'
+ endtry
+ END
+
+ new
+ call setline(1, lines)
+ let caught_exception = v:false
+ try
+ source
+ catch /E488: Trailing characters: \/xxx/
+ let caught_exception = v:true
+ endtry
+ call assert_true(caught_exception)
+ bw!
+endfunc
+
"-------------------------------------------------------------------------------
" Modelines {{{1
" vim: ts=8 sw=2 sts=2 expandtab tw=80 fdm=marker