diff options
Diffstat (limited to 'src/eval.c')
-rw-r--r-- | src/eval.c | 16 |
1 files changed, 10 insertions, 6 deletions
diff --git a/src/eval.c b/src/eval.c index cad6887751..61b09fb6b0 100644 --- a/src/eval.c +++ b/src/eval.c @@ -4102,19 +4102,23 @@ eval_lambda( ++*arg; ret = eval1(arg, rettv, evalarg); *arg = skipwhite_and_linebreak(*arg, evalarg); - if (**arg == ')') + if (**arg != ')') { - ++*arg; + emsg(_(e_missing_closing_paren)); + return FAIL; } - else + if (rettv->v_type != VAR_STRING && rettv->v_type != VAR_FUNC + && rettv->v_type != VAR_PARTIAL) { - emsg(_(e_missing_closing_paren)); - ret = FAIL; + emsg(_(e_string_or_function_required_for_arrow_parens_expr)); + return FAIL; } + ++*arg; } if (ret != OK) return FAIL; - else if (**arg != '(') + + if (**arg != '(') { if (verbose) { |