summaryrefslogtreecommitdiff
path: root/src/eval.c
diff options
context:
space:
mode:
authorBram Moolenaar <Bram@vim.org>2021-06-17 22:08:30 +0200
committerBram Moolenaar <Bram@vim.org>2021-06-17 22:08:30 +0200
commitfae55a9cb0838e4c2e634e55a3468af4a75fbdf2 (patch)
tree447433879f19c40fc11713807d664f8b971b3e03 /src/eval.c
parent74f4a965bc6e2a9c41cce2f644e861168702922f (diff)
downloadvim-git-fae55a9cb0838e4c2e634e55a3468af4a75fbdf2.tar.gz
patch 8.2.3016: confusing error when expression is followed by commav8.2.3016
Problem: Confusing error when expression is followed by comma. Solution: Give a different error for trailing text. (closes #8395)
Diffstat (limited to 'src/eval.c')
-rw-r--r--src/eval.c12
1 files changed, 10 insertions, 2 deletions
diff --git a/src/eval.c b/src/eval.c
index ffc7122cd..33ea8504a 100644
--- a/src/eval.c
+++ b/src/eval.c
@@ -2218,12 +2218,15 @@ eval0(
int did_emsg_before = did_emsg;
int called_emsg_before = called_emsg;
int flags = evalarg == NULL ? 0 : evalarg->eval_flags;
+ int end_error = FALSE;
p = skipwhite(arg);
ret = eval1(&p, rettv, evalarg);
p = skipwhite(p);
- if (ret == FAIL || !ends_excmd2(arg, p))
+ if (ret != FAIL)
+ end_error = !ends_excmd2(arg, p);
+ if (ret == FAIL || end_error)
{
if (ret != FAIL)
clear_tv(rettv);
@@ -2238,7 +2241,12 @@ eval0(
&& called_emsg == called_emsg_before
&& (flags & EVAL_CONSTANT) == 0
&& (!in_vim9script() || !vim9_bad_comment(p)))
- semsg(_(e_invexpr2), arg);
+ {
+ if (end_error)
+ semsg(_(e_trailing_arg), p);
+ else
+ semsg(_(e_invexpr2), arg);
+ }
// Some of the expression may not have been consumed. Do not check for
// a next command to avoid more errors, unless "|" is following, which