0
0
mirror of https://github.com/vim/vim.git synced 2025-07-26 11:04:33 -04:00

patch 8.2.0624: Vim9: no check for space before #comment

Problem:    Vim9: no check for space before #comment.
Solution:   Add space checks.  Fix :throw with double quoted string.
This commit is contained in:
Bram Moolenaar 2020-04-23 17:07:30 +02:00
parent f7b398c6a9
commit a72cfb80cd
5 changed files with 94 additions and 13 deletions

View File

@ -361,7 +361,7 @@ def Test_try_catch()
enddef enddef
def ThrowFromDef() def ThrowFromDef()
throw 'getout' throw "getout" # comment
enddef enddef
func CatchInFunc() func CatchInFunc()
@ -430,7 +430,7 @@ def Test_try_catch_fails()
call CheckDefFailure(['if 2', 'endtry'], 'E171:') call CheckDefFailure(['if 2', 'endtry'], 'E171:')
call CheckDefFailure(['try', 'echo 1', 'endtry'], 'E1032:') call CheckDefFailure(['try', 'echo 1', 'endtry'], 'E1032:')
call CheckDefFailure(['throw'], 'E471:') call CheckDefFailure(['throw'], 'E1015:')
call CheckDefFailure(['throw xxx'], 'E1001:') call CheckDefFailure(['throw xxx'], 'E1001:')
enddef enddef
@ -937,12 +937,18 @@ def Test_execute_cmd()
setline(1, 'default') setline(1, 'default')
execute 'call setline(1, "execute-string")' execute 'call setline(1, "execute-string")'
assert_equal('execute-string', getline(1)) assert_equal('execute-string', getline(1))
execute "call setline(1, 'execute-string')"
assert_equal('execute-string', getline(1))
let cmd1 = 'call setline(1,' let cmd1 = 'call setline(1,'
let cmd2 = '"execute-var")' let cmd2 = '"execute-var")'
execute cmd1 cmd2 execute cmd1 cmd2 # comment
assert_equal('execute-var', getline(1)) assert_equal('execute-var', getline(1))
execute cmd1 cmd2 '|call setline(1, "execute-var-string")' execute cmd1 cmd2 '|call setline(1, "execute-var-string")'
assert_equal('execute-var-string', getline(1)) assert_equal('execute-var-string', getline(1))
let cmd_first = 'call ' let cmd_first = 'call '
let cmd_last = 'setline(1, "execute-var-var")' let cmd_last = 'setline(1, "execute-var-var")'
execute cmd_first .. cmd_last execute cmd_first .. cmd_last
@ -950,17 +956,24 @@ def Test_execute_cmd()
bwipe! bwipe!
call CheckDefFailure(['execute xxx'], 'E1001:') call CheckDefFailure(['execute xxx'], 'E1001:')
call CheckDefFailure(['execute "cmd"# comment'], 'E488:')
enddef enddef
def Test_echo_cmd() def Test_echo_cmd()
echo 'some' echo 'some' # comment
echon 'thing' echon 'thing'
assert_match('^something$', Screenline(&lines)) assert_match('^something$', Screenline(&lines))
echo "some" # comment
echon "thing"
assert_match('^something$', Screenline(&lines))
let str1 = 'some' let str1 = 'some'
let str2 = 'more' let str2 = 'more'
echo str1 str2 echo str1 str2
assert_match('^some more$', Screenline(&lines)) assert_match('^some more$', Screenline(&lines))
call CheckDefFailure(['echo "xxx"# comment'], 'E488:')
enddef enddef
def Test_for_outside_of_function() def Test_for_outside_of_function()
@ -1162,6 +1175,18 @@ def Test_vim9_comment()
'try# comment', 'try# comment',
'echo "yes"', 'echo "yes"',
], 'E488:') ], 'E488:')
CheckDefFailure([
'try',
' throw#comment',
'catch',
'endtry',
], 'E1015:')
CheckDefFailure([
'try',
' throw "yes"#comment',
'catch',
'endtry',
], 'E488:')
CheckDefFailure([ CheckDefFailure([
'try', 'try',
' echo "yes"', ' echo "yes"',
@ -1380,6 +1405,65 @@ def Test_vim9_comment()
'vim9script', 'vim9script',
'syntax cluster Some contains=Word# comment', 'syntax cluster Some contains=Word# comment',
], 'E475:') ], 'E475:')
CheckScriptSuccess([
'vim9script',
'command Echo echo # comment',
'command Echo # comment',
])
CheckScriptFailure([
'vim9script',
'command Echo echo# comment',
'Echo',
], 'E121:')
CheckScriptFailure([
'vim9script',
'command Echo# comment',
], 'E182:')
CheckScriptFailure([
'vim9script',
'command Echo echo',
'command Echo# comment',
], 'E182:')
CheckScriptSuccess([
'vim9script',
'function # comment',
])
CheckScriptFailure([
'vim9script',
'function# comment',
], 'E129:')
CheckScriptSuccess([
'vim9script',
'function CheckScriptSuccess # comment',
])
CheckScriptFailure([
'vim9script',
'function CheckScriptSuccess# comment',
], 'E488:')
CheckScriptSuccess([
'vim9script',
'func DeleteMe()',
'endfunc',
'delfunction DeleteMe # comment',
])
CheckScriptFailure([
'vim9script',
'func DeleteMe()',
'endfunc',
'delfunction DeleteMe# comment',
], 'E488:')
CheckScriptSuccess([
'vim9script',
'call execute("ls") # comment',
])
CheckScriptFailure([
'vim9script',
'call execute("ls")# comment',
], 'E488:')
enddef enddef
def Test_vim9_comment_gui() def Test_vim9_comment_gui()

View File

@ -1007,7 +1007,7 @@ ex_command(exarg_T *eap)
if (ASCII_ISALPHA(*p)) if (ASCII_ISALPHA(*p))
while (ASCII_ISALNUM(*p)) while (ASCII_ISALNUM(*p))
++p; ++p;
if (!ends_excmd(*p) && !VIM_ISWHITE(*p)) if (!ends_excmd2(eap->arg, p) && !VIM_ISWHITE(*p))
{ {
emsg(_("E182: Invalid command name")); emsg(_("E182: Invalid command name"));
return; return;
@ -1018,7 +1018,7 @@ ex_command(exarg_T *eap)
// If there is nothing after the name, and no attributes were specified, // If there is nothing after the name, and no attributes were specified,
// we are listing commands // we are listing commands
p = skipwhite(end); p = skipwhite(end);
if (!has_attr && ends_excmd(*p)) if (!has_attr && ends_excmd2(eap->arg, p))
{ {
uc_list(name, end - name); uc_list(name, end - name);
} }

View File

@ -2373,7 +2373,7 @@ ex_function(exarg_T *eap)
/* /*
* ":function" without argument: list functions. * ":function" without argument: list functions.
*/ */
if (ends_excmd(*eap->arg)) if (ends_excmd2(eap->cmd, eap->arg))
{ {
if (!eap->skip) if (!eap->skip)
{ {
@ -3711,7 +3711,7 @@ ex_call(exarg_T *eap)
if (!failed || eap->cstack->cs_trylevel > 0) if (!failed || eap->cstack->cs_trylevel > 0)
{ {
// Check for trailing illegal characters and a following command. // Check for trailing illegal characters and a following command.
if (!ends_excmd(*arg)) if (!ends_excmd2(eap->arg, arg))
{ {
if (!failed) if (!failed)
{ {

View File

@ -746,6 +746,8 @@ static char *(features[]) =
static int included_patches[] = static int included_patches[] =
{ /* Add new patch number below this line */ { /* Add new patch number below this line */
/**/
624,
/**/ /**/
623, 623,
/**/ /**/

View File

@ -5752,11 +5752,6 @@ compile_throw(char_u *arg, cctx_T *cctx UNUSED)
{ {
char_u *p = skipwhite(arg); char_u *p = skipwhite(arg);
if (ends_excmd(*p))
{
emsg(_(e_argreq));
return NULL;
}
if (compile_expr1(&p, cctx) == FAIL) if (compile_expr1(&p, cctx) == FAIL)
return NULL; return NULL;
if (may_generate_2STRING(-1, cctx) == FAIL) if (may_generate_2STRING(-1, cctx) == FAIL)