changeset 20111:f40231487a49 v8.2.0611

patch 8.2.0611: Vim9: no check for space before #comment Commit: https://github.com/vim/vim/commit/faac410409a8d693a0326ad9db42dca85419a391 Author: Bram Moolenaar <Bram@vim.org> Date: Mon Apr 20 17:46:14 2020 +0200 patch 8.2.0611: Vim9: no check for space before #comment Problem: Vim9: no check for space before #comment. Solution: Add space checks.
author Bram Moolenaar <Bram@vim.org>
date Mon, 20 Apr 2020 18:00:03 +0200
parents e24fd2902727
children b209e0dd46a4
files src/eval.c src/evalvars.c src/ex_docmd.c src/testdir/test_vim9_script.vim src/version.c
diffstat 5 files changed, 69 insertions(+), 4 deletions(-) [+]
line wrap: on
line diff
--- a/src/eval.c
+++ b/src/eval.c
@@ -1773,7 +1773,7 @@ eval0(
 
     p = skipwhite(arg);
     ret = eval1(&p, rettv, evaluate);
-    if (ret == FAIL || !ends_excmd(*p))
+    if (ret == FAIL || !ends_excmd2(arg, p))
     {
 	if (ret != FAIL)
 	    clear_tv(rettv);
--- a/src/evalvars.c
+++ b/src/evalvars.c
@@ -737,7 +737,7 @@ ex_let_const(exarg_T *eap, int is_const)
 	    emsg(_(e_invarg));
 	else if (expr[0] == '.')
 	    emsg(_("E985: .= is not supported with script version 2"));
-	else if (!ends_excmd(*arg))
+	else if (!ends_excmd2(eap->cmd, arg))
 	    // ":let var1 var2"
 	    arg = list_arg_vars(eap, arg, &first);
 	else if (!eap->skip)
@@ -1068,7 +1068,7 @@ list_arg_vars(exarg_T *eap, char_u *arg,
     char_u	*tofree;
     typval_T    tv;
 
-    while (!ends_excmd(*arg) && !got_int)
+    while (!ends_excmd2(eap->cmd, arg) && !got_int)
     {
 	if (error || eap->skip)
 	{
--- a/src/ex_docmd.c
+++ b/src/ex_docmd.c
@@ -7903,7 +7903,7 @@ ex_findpat(exarg_T *eap)
 	    p = skipwhite(p);
 
 	    // Check for trailing illegal characters
-	    if (!ends_excmd(*p))
+	    if (!ends_excmd2(eap->arg, p))
 		eap->errmsg = e_trailing;
 	    else
 		eap->nextcmd = check_nextcmd(p);
--- a/src/testdir/test_vim9_script.vim
+++ b/src/testdir/test_vim9_script.vim
@@ -1208,6 +1208,69 @@ def Test_vim9_comment_not_compiled()
       'let g:var = 123',
       'unlet g:var # something',
       ], 'E488:')
+
+  CheckScriptSuccess([
+      'vim9script',
+      'if 1 # comment',
+      '  echo "yes"',
+      'elseif 2 #comment',
+      '  echo "no"',
+      'endif',
+      ])
+
+  CheckScriptFailure([
+      'vim9script',
+      'if 1# comment',
+      '  echo "yes"',
+      'endif',
+      ], 'E15:')
+
+  CheckScriptFailure([
+      'vim9script',
+      'if 0 # comment',
+      '  echo "yes"',
+      'elseif 2#comment',
+      '  echo "no"',
+      'endif',
+      ], 'E15:')
+
+  CheckScriptSuccess([
+      'vim9script',
+      'let # comment',
+      ])
+
+  CheckScriptFailure([
+      'vim9script',
+      'let# comment',
+      ], 'E121:')
+
+  CheckScriptSuccess([
+      'vim9script',
+      'let v:version # comment',
+      ])
+
+  CheckScriptFailure([
+      'vim9script',
+      'let v:version# comment',
+      ], 'E121:')
+
+  CheckScriptSuccess([
+      'vim9script',
+      'new'
+      'call setline(1, ["# define pat", "last"])',
+      '$',
+      'dsearch /pat/ #comment',
+      'bwipe!',
+      ])
+
+  CheckScriptFailure([
+      'vim9script',
+      'new'
+      'call setline(1, ["# define pat", "last"])',
+      '$',
+      'dsearch /pat/#comment',
+      'bwipe!',
+      ], 'E488:')
 enddef
 
 " Keep this last, it messes up highlighting.
--- a/src/version.c
+++ b/src/version.c
@@ -747,6 +747,8 @@ static char *(features[]) =
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    611,
+/**/
     610,
 /**/
     609,