mirror of
https://github.com/vim/vim.git
synced 2025-07-26 11:04:33 -04:00
patch 8.2.3858: Vim9: not enough tests
Problem: Vim9: not enough tests. Solution: Add tests for :try/:catch and :redir. Add missing type check.
This commit is contained in:
parent
2f9f4ccfc8
commit
003312b1d2
@ -1558,6 +1558,23 @@ def Test_redir_to_var()
|
|||||||
redir END
|
redir END
|
||||||
END
|
END
|
||||||
CheckDefFailure(lines, 'E1141:')
|
CheckDefFailure(lines, 'E1141:')
|
||||||
|
|
||||||
|
lines =<< trim END
|
||||||
|
var text: string
|
||||||
|
redir => text
|
||||||
|
echo 'hello'
|
||||||
|
redir > Xfile
|
||||||
|
redir END
|
||||||
|
END
|
||||||
|
CheckDefFailure(lines, 'E1185:')
|
||||||
|
|
||||||
|
lines =<< trim END
|
||||||
|
var text: number
|
||||||
|
redir => text
|
||||||
|
echo 'hello'
|
||||||
|
redir END
|
||||||
|
END
|
||||||
|
CheckDefFailure(lines, 'E1012:')
|
||||||
enddef
|
enddef
|
||||||
|
|
||||||
def Test_echo_void()
|
def Test_echo_void()
|
||||||
|
@ -611,15 +611,49 @@ def Test_try_catch_throw()
|
|||||||
# no requirement for spaces before |
|
# no requirement for spaces before |
|
||||||
try|echo 0|catch|endtry
|
try|echo 0|catch|endtry
|
||||||
|
|
||||||
|
# return in try with finally
|
||||||
|
def ReturnInTry(): number
|
||||||
|
var ret = 4
|
||||||
|
try
|
||||||
|
return ret
|
||||||
|
catch /this/
|
||||||
|
return -1
|
||||||
|
catch /that/
|
||||||
|
return -1
|
||||||
|
finally
|
||||||
|
# changing ret has no effect
|
||||||
|
ret = 7
|
||||||
|
endtry
|
||||||
|
return -2
|
||||||
|
enddef
|
||||||
|
assert_equal(4, ReturnInTry())
|
||||||
|
|
||||||
|
# return in catch with finally
|
||||||
|
def ReturnInCatch(): number
|
||||||
|
var ret = 5
|
||||||
|
try
|
||||||
|
throw 'getout'
|
||||||
|
return -1
|
||||||
|
catch /getout/
|
||||||
|
# ret is evaluated here
|
||||||
|
return ret
|
||||||
|
finally
|
||||||
|
# changing ret later has no effect
|
||||||
|
ret = -3
|
||||||
|
endtry
|
||||||
|
return -2
|
||||||
|
enddef
|
||||||
|
assert_equal(5, ReturnInCatch())
|
||||||
|
|
||||||
# return in finally after empty catch
|
# return in finally after empty catch
|
||||||
def ReturnInFinally(): number
|
def ReturnInFinally(): number
|
||||||
try
|
try
|
||||||
finally
|
finally
|
||||||
return 4
|
return 6
|
||||||
endtry
|
endtry
|
||||||
return 2
|
return -1
|
||||||
enddef
|
enddef
|
||||||
assert_equal(4, ReturnInFinally())
|
assert_equal(6, ReturnInFinally())
|
||||||
|
|
||||||
var lines =<< trim END
|
var lines =<< trim END
|
||||||
vim9script
|
vim9script
|
||||||
|
@ -749,6 +749,8 @@ static char *(features[]) =
|
|||||||
|
|
||||||
static int included_patches[] =
|
static int included_patches[] =
|
||||||
{ /* Add new patch number below this line */
|
{ /* Add new patch number below this line */
|
||||||
|
/**/
|
||||||
|
3858,
|
||||||
/**/
|
/**/
|
||||||
3857,
|
3857,
|
||||||
/**/
|
/**/
|
||||||
|
@ -8651,7 +8651,7 @@ compile_endblock(cctx_T *cctx)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* compile "try"
|
* Compile "try".
|
||||||
* Creates a new scope for the try-endtry, pointing to the first catch and
|
* Creates a new scope for the try-endtry, pointing to the first catch and
|
||||||
* finally.
|
* finally.
|
||||||
* Creates another scope for the "try" block itself.
|
* Creates another scope for the "try" block itself.
|
||||||
@ -8722,7 +8722,7 @@ compile_try(char_u *arg, cctx_T *cctx)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* compile "catch {expr}"
|
* Compile "catch {expr}".
|
||||||
*/
|
*/
|
||||||
static char_u *
|
static char_u *
|
||||||
compile_catch(char_u *arg, cctx_T *cctx UNUSED)
|
compile_catch(char_u *arg, cctx_T *cctx UNUSED)
|
||||||
@ -9534,6 +9534,9 @@ compile_redir(char_u *line, exarg_T *eap, cctx_T *cctx)
|
|||||||
if (compile_assign_lhs(arg, lhs, CMD_redir,
|
if (compile_assign_lhs(arg, lhs, CMD_redir,
|
||||||
FALSE, FALSE, 1, cctx) == FAIL)
|
FALSE, FALSE, 1, cctx) == FAIL)
|
||||||
return NULL;
|
return NULL;
|
||||||
|
if (need_type(&t_string, lhs->lhs_member_type,
|
||||||
|
-1, 0, cctx, FALSE, FALSE) == FAIL)
|
||||||
|
return NULL;
|
||||||
generate_instr(cctx, ISN_REDIRSTART);
|
generate_instr(cctx, ISN_REDIRSTART);
|
||||||
lhs->lhs_append = append;
|
lhs->lhs_append = append;
|
||||||
if (lhs->lhs_has_index)
|
if (lhs->lhs_has_index)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user