diff options
author | zeertzjq <zeertzjq@outlook.com> | 2023-04-15 13:10:36 +0800 |
---|---|---|
committer | zeertzjq <zeertzjq@outlook.com> | 2023-04-15 13:15:10 +0800 |
commit | 4c276bbd1887c09350fca4bdb355a2afde3ef471 (patch) | |
tree | 87e905f8b0f09576ab55db25c804bd3227c270fd | |
parent | d372eedcfa8cae3b20853bfb1489ec8beb825e94 (diff) | |
download | rneovim-4c276bbd1887c09350fca4bdb355a2afde3ef471.tar.gz rneovim-4c276bbd1887c09350fca4bdb355a2afde3ef471.tar.bz2 rneovim-4c276bbd1887c09350fca4bdb355a2afde3ef471.zip |
vim-patch:8.2.0103: using null object with execute() has strange effects
Problem: Using null object with execute() has strange effects.
Solution: Give an error message ofr Job and Channel.
https://github.com/vim/vim/commit/e2a8f0773e91685843c062b1e48259712d5f2213
Co-authored-by: Bram Moolenaar <Bram@vim.org>
-rw-r--r-- | src/nvim/eval/typval.c | 2 | ||||
-rw-r--r-- | src/nvim/globals.h | 1 | ||||
-rw-r--r-- | test/old/testdir/test_execute_func.vim | 16 |
3 files changed, 15 insertions, 4 deletions
diff --git a/src/nvim/eval/typval.c b/src/nvim/eval/typval.c index 91be41751e..7c982de61e 100644 --- a/src/nvim/eval/typval.c +++ b/src/nvim/eval/typval.c @@ -3806,7 +3806,7 @@ static const char *const str_errors[] = { [VAR_DICT]= N_("E731: using Dictionary as a String"), [VAR_FLOAT]= e_float_as_string, [VAR_BLOB]= N_("E976: using Blob as a String"), - [VAR_UNKNOWN]= N_("E908: using an invalid value as a String"), + [VAR_UNKNOWN]= e_inval_string, }; #undef FUNC_ERROR diff --git a/src/nvim/globals.h b/src/nvim/globals.h index 7653076e39..e406d93494 100644 --- a/src/nvim/globals.h +++ b/src/nvim/globals.h @@ -998,6 +998,7 @@ EXTERN const char e_listarg[] INIT(= N_("E686: Argument of %s must be a List")); EXTERN const char e_unsupportedoption[] INIT(= N_("E519: Option not supported")); EXTERN const char e_fnametoolong[] INIT(= N_("E856: Filename too long")); EXTERN const char e_float_as_string[] INIT(= N_("E806: using Float as a String")); +EXTERN const char e_inval_string[] INIT(= N_("E908: using an invalid value as a String")); EXTERN const char e_cannot_edit_other_buf[] INIT(= N_("E788: Not allowed to edit another buffer now")); EXTERN const char e_cmdmap_err[] INIT(= N_("E5520: <Cmd> mapping must end with <CR>")); diff --git a/test/old/testdir/test_execute_func.vim b/test/old/testdir/test_execute_func.vim index 16cc20e9a7..171cea1e49 100644 --- a/test/old/testdir/test_execute_func.vim +++ b/test/old/testdir/test_execute_func.vim @@ -41,8 +41,6 @@ func Test_execute_string() call assert_equal("\nsomething", execute('echo "something"', 'silent!')) call assert_equal("", execute('burp', 'silent!')) call assert_fails('call execute("echo \"x\"", 3.4)', 'E806:') - - call assert_equal("", execute("")) endfunc func Test_execute_list() @@ -53,7 +51,6 @@ func Test_execute_list() call assert_equal("\n0\n1\n2\n3", execute(l)) call assert_equal("", execute([])) - call assert_equal("", execute(v:_null_list)) endfunc func Test_execute_does_not_change_col() @@ -173,4 +170,17 @@ func Test_win_execute_visual_redraw() bwipe! endfunc +func Test_execute_null() + call assert_equal("", execute(v:_null_string)) + call assert_equal("", execute(v:_null_list)) + call assert_fails('call execute(v:_null_dict)', 'E731:') + call assert_fails('call execute(v:_null_blob)', 'E976:') + " Nvim doesn't have null partials + " call assert_fails('call execute(test_null_partial())','E729:') + if has('job') + call assert_fails('call execute(test_null_job())', 'E908:') + call assert_fails('call execute(test_null_channel())', 'E908:') + endif +endfunc + " vim: shiftwidth=2 sts=2 expandtab |