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)
diff --git a/src/ex_eval.c b/src/ex_eval.c
index 9a2792a..e9dbd10 100644
--- a/src/ex_eval.c
+++ b/src/ex_eval.c
@@ -940,8 +940,14 @@
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 4cd78f6..50719e1 100644
--- a/src/testdir/test_vim9_cmd.vim
+++ b/src/testdir/test_vim9_cmd.vim
@@ -651,6 +651,20 @@
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'
@/
END
diff --git a/src/version.c b/src/version.c
index f0269e4..5ad7551 100644
--- a/src/version.c
+++ b/src/version.c
@@ -747,6 +747,8 @@
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
+ 4872,
+/**/
4871,
/**/
4870,