diff options
author | Bram Moolenaar <Bram@vim.org> | 2021-06-17 22:08:30 +0200 |
---|---|---|
committer | Bram Moolenaar <Bram@vim.org> | 2021-06-17 22:08:30 +0200 |
commit | fae55a9cb0838e4c2e634e55a3468af4a75fbdf2 (patch) | |
tree | 447433879f19c40fc11713807d664f8b971b3e03 /src/eval.c | |
parent | 74f4a965bc6e2a9c41cce2f644e861168702922f (diff) | |
download | vim-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.c | 12 |
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 |