0
0
mirror of https://github.com/vim/vim.git synced 2025-07-26 11:04:33 -04:00

patch 8.2.2445: Vim9: no proper error for lambda missing return type

Problem:    Vim9: no proper error for lambda missing return type.
Solution:   Check for this error. (closes #7758)
This commit is contained in:
Bram Moolenaar 2021-01-31 22:18:29 +01:00
parent e507ff15d5
commit 0346b799fc
4 changed files with 18 additions and 1 deletions

View File

@ -349,3 +349,5 @@ EXTERN char e_cannot_define_autocommands_for_all_events[]
INIT(= N_("E1155: Cannot define autocommands for ALL events"));
EXTERN char e_cannot_change_arglist_recursively[]
INIT(= N_("E1156: Cannot change the argument list recursively"));
EXTERN char e_missing_return_type[]
INIT(= N_("E1157: Missing return type"));

View File

@ -687,6 +687,13 @@ def Test_call_lambda_args()
CheckDefAndScriptFailure(lines, 'E1012:')
enddef
def Test_lambda_return_type()
var lines =<< trim END
var Ref = (): => 123
END
CheckDefAndScriptFailure(lines, 'E1157:', 1)
enddef
def Test_lambda_uses_assigned_var()
CheckDefSuccess([
'var x: any = "aaa"'

View File

@ -491,6 +491,11 @@ skip_arrow(
s = skipwhite(s + 1);
*ret_type = s;
s = skip_type(s, TRUE);
if (s == *ret_type)
{
emsg(_(e_missing_return_type));
return NULL;
}
}
bef = s;
s = skipwhite(s);
@ -543,6 +548,7 @@ get_lambda_tv(
char_u *tofree2 = NULL;
int equal_arrow = **arg == '(';
int white_error = FALSE;
int called_emsg_start = called_emsg;
if (equal_arrow && !in_vim9script())
return NOTDONE;
@ -560,7 +566,7 @@ get_lambda_tv(
{
if (types_optional)
ga_clear_strings(&argtypes);
return NOTDONE;
return called_emsg == called_emsg_start ? NOTDONE : FAIL;
}
// Parse the arguments for real.

View File

@ -750,6 +750,8 @@ static char *(features[]) =
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
2445,
/**/
2444,
/**/