Problem: Vim9: no check for space before #comment.
Solution: Add space checks.
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);
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)
char_u *tofree;
typval_T tv;
- while (!ends_excmd(*arg) && !got_int)
+ while (!ends_excmd2(eap->cmd, arg) && !got_int)
{
if (error || eap->skip)
{
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);
'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.
static int included_patches[] =
{ /* Add new patch number below this line */
+/**/
+ 611,
/**/
610,
/**/