diff options
author | Bram Moolenaar <Bram@vim.org> | 2021-01-31 22:18:29 +0100 |
---|---|---|
committer | Bram Moolenaar <Bram@vim.org> | 2021-01-31 22:18:29 +0100 |
commit | 0346b799fc228a3b48967ca0747e6b23586dbaa6 (patch) | |
tree | 9cbcb1f9e27e0eeab9d11cbd387776ec4f515697 /src/userfunc.c | |
parent | e507ff15d52653dad3054ddc0073708977621c0c (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.c | 8 |
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. |