aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorzeertzjq <zeertzjq@outlook.com>2023-04-15 13:10:36 +0800
committerzeertzjq <zeertzjq@outlook.com>2023-04-15 13:15:10 +0800
commit4c276bbd1887c09350fca4bdb355a2afde3ef471 (patch)
tree87e905f8b0f09576ab55db25c804bd3227c270fd
parentd372eedcfa8cae3b20853bfb1489ec8beb825e94 (diff)
downloadrneovim-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.c2
-rw-r--r--src/nvim/globals.h1
-rw-r--r--test/old/testdir/test_execute_func.vim16
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