summaryrefslogtreecommitdiffstats
path: root/src/userfunc.c
diff options
context:
space:
mode:
authorBram Moolenaar <Bram@vim.org>2021-01-31 22:18:29 +0100
committerBram Moolenaar <Bram@vim.org>2021-01-31 22:18:29 +0100
commit0346b799fc228a3b48967ca0747e6b23586dbaa6 (patch)
tree9cbcb1f9e27e0eeab9d11cbd387776ec4f515697 /src/userfunc.c
parente507ff15d52653dad3054ddc0073708977621c0c (diff)
patch 8.2.2445: Vim9: no proper error for lambda missing return typev8.2.2445
Problem: Vim9: no proper error for lambda missing return type. Solution: Check for this error. (closes #7758)
Diffstat (limited to 'src/userfunc.c')
-rw-r--r--src/userfunc.c8
1 files changed, 7 insertions, 1 deletions
diff --git a/src/userfunc.c b/src/userfunc.c
index 0f28b028e7..701edaf30d 100644
--- a/src/userfunc.c
+++ b/src/userfunc.c
@@ -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.