diff options
author | Bram Moolenaar <Bram@vim.org> | 2020-04-23 17:07:30 +0200 |
---|---|---|
committer | Bram Moolenaar <Bram@vim.org> | 2020-04-23 17:07:30 +0200 |
commit | a72cfb80cd7aa589ad2a4fb8766ed6d30ea8ae33 (patch) | |
tree | 4e0ba772f84209f1d2364b6ed0c59db5f08530c7 | |
parent | f7b398c6a9476a2004a42555b731ebf47b866408 (diff) | |
download | vim-git-a72cfb80cd7aa589ad2a4fb8766ed6d30ea8ae33.tar.gz |
patch 8.2.0624: Vim9: no check for space before #commentv8.2.0624
Problem: Vim9: no check for space before #comment.
Solution: Add space checks. Fix :throw with double quoted string.
-rw-r--r-- | src/testdir/test_vim9_script.vim | 92 | ||||
-rw-r--r-- | src/usercmd.c | 4 | ||||
-rw-r--r-- | src/userfunc.c | 4 | ||||
-rw-r--r-- | src/version.c | 2 | ||||
-rw-r--r-- | src/vim9compile.c | 5 |
5 files changed, 94 insertions, 13 deletions
diff --git a/src/testdir/test_vim9_script.vim b/src/testdir/test_vim9_script.vim index 219a86f27..5eda50b73 100644 --- a/src/testdir/test_vim9_script.vim +++ b/src/testdir/test_vim9_script.vim @@ -361,7 +361,7 @@ def Test_try_catch() enddef def ThrowFromDef() - throw 'getout' + throw "getout" # comment enddef func CatchInFunc() @@ -430,7 +430,7 @@ def Test_try_catch_fails() call CheckDefFailure(['if 2', 'endtry'], 'E171:') call CheckDefFailure(['try', 'echo 1', 'endtry'], 'E1032:') - call CheckDefFailure(['throw'], 'E471:') + call CheckDefFailure(['throw'], 'E1015:') call CheckDefFailure(['throw xxx'], 'E1001:') enddef @@ -937,12 +937,18 @@ def Test_execute_cmd() setline(1, 'default') execute 'call setline(1, "execute-string")' assert_equal('execute-string', getline(1)) + + execute "call setline(1, 'execute-string')" + assert_equal('execute-string', getline(1)) + let cmd1 = 'call setline(1,' let cmd2 = '"execute-var")' - execute cmd1 cmd2 + execute cmd1 cmd2 # comment assert_equal('execute-var', getline(1)) + execute cmd1 cmd2 '|call setline(1, "execute-var-string")' assert_equal('execute-var-string', getline(1)) + let cmd_first = 'call ' let cmd_last = 'setline(1, "execute-var-var")' execute cmd_first .. cmd_last @@ -950,17 +956,24 @@ def Test_execute_cmd() bwipe! call CheckDefFailure(['execute xxx'], 'E1001:') + call CheckDefFailure(['execute "cmd"# comment'], 'E488:') enddef def Test_echo_cmd() - echo 'some' + echo 'some' # comment echon 'thing' assert_match('^something$', Screenline(&lines)) + echo "some" # comment + echon "thing" + assert_match('^something$', Screenline(&lines)) + let str1 = 'some' let str2 = 'more' echo str1 str2 assert_match('^some more$', Screenline(&lines)) + + call CheckDefFailure(['echo "xxx"# comment'], 'E488:') enddef def Test_for_outside_of_function() @@ -1164,6 +1177,18 @@ def Test_vim9_comment() ], 'E488:') CheckDefFailure([ 'try', + ' throw#comment', + 'catch', + 'endtry', + ], 'E1015:') + CheckDefFailure([ + 'try', + ' throw "yes"#comment', + 'catch', + 'endtry', + ], 'E488:') + CheckDefFailure([ + 'try', ' echo "yes"', 'catch# comment', 'endtry', @@ -1380,6 +1405,65 @@ def Test_vim9_comment() 'vim9script', 'syntax cluster Some contains=Word# comment', ], '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 def Test_vim9_comment_gui() diff --git a/src/usercmd.c b/src/usercmd.c index fc14430b6..cdc46a10b 100644 --- a/src/usercmd.c +++ b/src/usercmd.c @@ -1007,7 +1007,7 @@ ex_command(exarg_T *eap) if (ASCII_ISALPHA(*p)) while (ASCII_ISALNUM(*p)) ++p; - if (!ends_excmd(*p) && !VIM_ISWHITE(*p)) + if (!ends_excmd2(eap->arg, p) && !VIM_ISWHITE(*p)) { emsg(_("E182: Invalid command name")); return; @@ -1018,7 +1018,7 @@ ex_command(exarg_T *eap) // If there is nothing after the name, and no attributes were specified, // we are listing commands p = skipwhite(end); - if (!has_attr && ends_excmd(*p)) + if (!has_attr && ends_excmd2(eap->arg, p)) { uc_list(name, end - name); } diff --git a/src/userfunc.c b/src/userfunc.c index dfda733a1..698c1b1e3 100644 --- a/src/userfunc.c +++ b/src/userfunc.c @@ -2373,7 +2373,7 @@ ex_function(exarg_T *eap) /* * ":function" without argument: list functions. */ - if (ends_excmd(*eap->arg)) + if (ends_excmd2(eap->cmd, eap->arg)) { if (!eap->skip) { @@ -3711,7 +3711,7 @@ ex_call(exarg_T *eap) if (!failed || eap->cstack->cs_trylevel > 0) { // Check for trailing illegal characters and a following command. - if (!ends_excmd(*arg)) + if (!ends_excmd2(eap->arg, arg)) { if (!failed) { diff --git a/src/version.c b/src/version.c index b2268736f..86cfce095 100644 --- 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 */ /**/ + 624, +/**/ 623, /**/ 622, diff --git a/src/vim9compile.c b/src/vim9compile.c index daa1cbea4..393d2b824 100644 --- a/src/vim9compile.c +++ b/src/vim9compile.c @@ -5752,11 +5752,6 @@ compile_throw(char_u *arg, cctx_T *cctx UNUSED) { char_u *p = skipwhite(arg); - if (ends_excmd(*p)) - { - emsg(_(e_argreq)); - return NULL; - } if (compile_expr1(&p, cctx) == FAIL) return NULL; if (may_generate_2STRING(-1, cctx) == FAIL) |