patch 8.2.2527: Vim9: lambda return type is not determined at script level
Problem: Vim9: lambda return type is not determined at script level.
Solution: Compile the lambda to get the return type. (closes #7843)
diff --git a/src/eval.c b/src/eval.c
index aae6ee8..785d841 100644
--- a/src/eval.c
+++ b/src/eval.c
@@ -3421,7 +3421,17 @@
*/
case '(': ret = NOTDONE;
if (in_vim9script())
+ {
ret = get_lambda_tv(arg, rettv, TRUE, evalarg);
+ if (ret == OK && evaluate)
+ {
+ ufunc_T *ufunc = rettv->vval.v_partial->pt_func;
+
+ // compile it here to get the return type
+ compile_def_function(ufunc,
+ TRUE, PROFILING(ufunc), NULL);
+ }
+ }
if (ret == NOTDONE)
{
*arg = skipwhite_and_linebreak(*arg + 1, evalarg);