From ea72038d60401d351faaf1b4a52f4537e719df6f Mon Sep 17 00:00:00 2001 From: Bram Moolenaar Date: Thu, 5 May 2022 16:08:55 +0100 Subject: patch 8.2.4872: Vim9: no error for using an expression only Problem: Vim9: no error for using an expression only at the script level when followed by an empty line. Solution: Do not check the line number but whether something follows. (closes #10357) --- src/ex_eval.c | 8 +++++++- src/testdir/test_vim9_cmd.vim | 14 ++++++++++++++ src/version.c | 2 ++ 3 files changed, 23 insertions(+), 1 deletion(-) diff --git a/src/ex_eval.c b/src/ex_eval.c index 9a2792a2ac..e9dbd107c8 100644 --- a/src/ex_eval.c +++ b/src/ex_eval.c @@ -940,8 +940,14 @@ ex_eval(exarg_T *eap) if (eval0(eap->arg, &tv, eap, &evalarg) == OK) { clear_tv(&tv); - if (in_vim9script() && name_only && lnum == SOURCING_LNUM) + if (in_vim9script() && name_only + && (evalarg.eval_tofree == NULL + || ends_excmd2(evalarg.eval_tofree, + skipwhite(evalarg.eval_tofree)))) + { + SOURCING_LNUM = lnum; semsg(_(e_expression_without_effect_str), eap->arg); + } } clear_evalarg(&evalarg, eap); diff --git a/src/testdir/test_vim9_cmd.vim b/src/testdir/test_vim9_cmd.vim index 4cd78f6d11..50719e1b54 100644 --- a/src/testdir/test_vim9_cmd.vim +++ b/src/testdir/test_vim9_cmd.vim @@ -650,6 +650,20 @@ def Test_use_register() END v9.CheckDefAndScriptFailure(lines, 'E1207:', 2) + lines =<< trim END + @a = 'echo "text"' + @a + + END + v9.CheckDefAndScriptFailure(lines, 'E1207:', 2) + + lines =<< trim END + @a = 'echo "text"' + @a + # comment + END + v9.CheckDefAndScriptFailure(lines, 'E1207:', 2) + lines =<< trim END @/ = 'pattern' @/ diff --git a/src/version.c b/src/version.c index f0269e44dd..5ad75510f8 100644 --- a/src/version.c +++ b/src/version.c @@ -746,6 +746,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ +/**/ + 4872, /**/ 4871, /**/ -- cgit v1.2.3