From: Bram Moolenaar Date: Mon, 20 Apr 2020 15:46:14 +0000 (+0200) Subject: patch 8.2.0611: Vim9: no check for space before #comment X-Git-Tag: v8.2.0611 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=faac410409a8d693a0326ad9db42dca85419a391;p=vim 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 index 94ecf936e..43c20086c 100644 --- 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 index b5075d59c..1d0599f5a 100644 --- 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, int *first) 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 index e2d771e19..43cd013e2 100644 --- 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 index 4b7339961..70653f033 100644 --- 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 index 1c5ad5624..d051d79c8 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 */ +/**/ + 611, /**/ 610, /**/