# HG changeset patch # User Bram Moolenaar # Date 1587398403 -7200 # Node ID f40231487a4905e74b8d7e600561f147705b51ae # Parent e24fd29027277e71a4a80b8f0bd2893b01f3552f patch 8.2.0611: Vim9: no check for space before #comment Commit: https://github.com/vim/vim/commit/faac410409a8d693a0326ad9db42dca85419a391 Author: Bram Moolenaar 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. diff --git a/src/eval.c b/src/eval.c --- 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); diff --git a/src/evalvars.c b/src/evalvars.c --- 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) { diff --git a/src/ex_docmd.c b/src/ex_docmd.c --- 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); diff --git a/src/testdir/test_vim9_script.vim b/src/testdir/test_vim9_script.vim --- 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. diff --git a/src/version.c b/src/version.c --- 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,