mirror of
https://github.com/vim/vim.git
synced 2025-09-25 03:54:15 -04:00
patch 8.2.4572: Vim9: return type "any" is changed to first returned type
Problem: Vim9: return type "any" is sometimes changed to first returned type. (Virginia Senioria) Solution: Do not change the return type if declared as "any". (closes #9949)
This commit is contained in:
@@ -535,6 +535,30 @@ def Test_return_list_any()
|
|||||||
v9.CheckScriptSuccess(lines)
|
v9.CheckScriptSuccess(lines)
|
||||||
enddef
|
enddef
|
||||||
|
|
||||||
|
def Test_return_any_two_types()
|
||||||
|
var lines =<< trim END
|
||||||
|
vim9script
|
||||||
|
|
||||||
|
def G(Fn: func(string): any)
|
||||||
|
g:result = Fn("hello")
|
||||||
|
enddef
|
||||||
|
|
||||||
|
def F(a: number, b: string): any
|
||||||
|
echo b
|
||||||
|
if a > 0
|
||||||
|
return 1
|
||||||
|
else
|
||||||
|
return []
|
||||||
|
endif
|
||||||
|
enddef
|
||||||
|
|
||||||
|
G(function(F, [1]))
|
||||||
|
END
|
||||||
|
v9.CheckScriptSuccess(lines)
|
||||||
|
assert_equal(1, g:result)
|
||||||
|
unlet g:result
|
||||||
|
enddef
|
||||||
|
|
||||||
func s:Increment()
|
func s:Increment()
|
||||||
let g:counter += 1
|
let g:counter += 1
|
||||||
endfunc
|
endfunc
|
||||||
|
@@ -750,6 +750,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 */
|
||||||
|
/**/
|
||||||
|
4572,
|
||||||
/**/
|
/**/
|
||||||
4571,
|
4571,
|
||||||
/**/
|
/**/
|
||||||
|
@@ -2258,8 +2258,7 @@ compile_return(char_u *arg, int check_return_type, int legacy, cctx_T *cctx)
|
|||||||
// return type here.
|
// return type here.
|
||||||
stack_type = get_type_on_stack(cctx, 0);
|
stack_type = get_type_on_stack(cctx, 0);
|
||||||
if ((check_return_type && (cctx->ctx_ufunc->uf_ret_type == NULL
|
if ((check_return_type && (cctx->ctx_ufunc->uf_ret_type == NULL
|
||||||
|| cctx->ctx_ufunc->uf_ret_type == &t_unknown
|
|| cctx->ctx_ufunc->uf_ret_type == &t_unknown))
|
||||||
|| cctx->ctx_ufunc->uf_ret_type == &t_any))
|
|
||||||
|| (!check_return_type
|
|| (!check_return_type
|
||||||
&& cctx->ctx_ufunc->uf_ret_type == &t_unknown))
|
&& cctx->ctx_ufunc->uf_ret_type == &t_unknown))
|
||||||
{
|
{
|
||||||
|
Reference in New Issue
Block a user