summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorBram Moolenaar <Bram@vim.org>2019-01-22 22:20:38 +0100
committerBram Moolenaar <Bram@vim.org>2019-01-22 22:20:38 +0100
commit0d17f0d1c09fa6db306336695ba646c21ea24909 (patch)
treeb4479797119d3ca92a669176315dc3edaa21576d /src
parent9e26f7d31fbb780613fa700fe61de3e0b4ff2ef6 (diff)
downloadvim-git-8.1.0793.tar.gz
patch 8.1.0793: incorrect error messages for functions that take a Blobv8.1.0793
Problem: Incorrect error messages for functions that now take a Blob argument. Solution: Adjust the error messages. (Dominique Pelle, closes #3846)
Diffstat (limited to 'src')
-rw-r--r--src/evalfunc.c13
-rw-r--r--src/globals.h2
-rw-r--r--src/testdir/test_blob.vim6
-rw-r--r--src/testdir/test_listdict.vim4
-rw-r--r--src/version.c2
5 files changed, 18 insertions, 9 deletions
diff --git a/src/evalfunc.c b/src/evalfunc.c
index ac009e6e9..11884abe7 100644
--- a/src/evalfunc.c
+++ b/src/evalfunc.c
@@ -29,6 +29,7 @@
#endif
static char *e_listarg = N_("E686: Argument of %s must be a List");
+static char *e_listblobarg = N_("E898: Argument of %s must be a List or Blob");
static char *e_stringreq = N_("E928: String required");
#ifdef FEAT_FLOAT
@@ -1269,7 +1270,7 @@ f_add(typval_T *argvars, typval_T *rettv)
}
}
else
- emsg(_(e_listreq));
+ emsg(_(e_listblobreq));
}
/*
@@ -4490,7 +4491,7 @@ f_get(typval_T *argvars, typval_T *rettv)
}
}
else
- semsg(_(e_listdictarg), "get()");
+ semsg(_(e_listdictblobarg), "get()");
if (tv == NULL)
{
@@ -7057,7 +7058,7 @@ f_index(typval_T *argvars, typval_T *rettv)
}
else if (argvars[0].v_type != VAR_LIST)
{
- emsg(_(e_listreq));
+ emsg(_(e_listblobreq));
return;
}
@@ -7281,7 +7282,7 @@ f_insert(typval_T *argvars, typval_T *rettv)
copy_tv(&argvars[0], rettv);
}
else if (argvars[0].v_type != VAR_LIST)
- semsg(_(e_listarg), "insert()");
+ semsg(_(e_listblobarg), "insert()");
else if ((l = argvars[0].vval.v_list) != NULL && !tv_check_lock(l->lv_lock,
(char_u *)N_("insert() argument"), TRUE))
{
@@ -9789,7 +9790,7 @@ f_remove(typval_T *argvars, typval_T *rettv)
}
}
else if (argvars[0].v_type != VAR_LIST)
- semsg(_(e_listdictarg), "remove()");
+ semsg(_(e_listdictblobarg), "remove()");
else if ((l = argvars[0].vval.v_list) != NULL
&& !tv_check_lock(l->lv_lock, arg_errmsg, TRUE))
{
@@ -10136,7 +10137,7 @@ f_reverse(typval_T *argvars, typval_T *rettv)
}
if (argvars[0].v_type != VAR_LIST)
- semsg(_(e_listarg), "reverse()");
+ semsg(_(e_listblobarg), "reverse()");
else if ((l = argvars[0].vval.v_list) != NULL
&& !tv_check_lock(l->lv_lock,
(char_u *)N_("reverse() argument"), TRUE))
diff --git a/src/globals.h b/src/globals.h
index d9cd467ca..ef3764c82 100644
--- a/src/globals.h
+++ b/src/globals.h
@@ -1521,7 +1521,9 @@ EXTERN char e_invalblob[] INIT(= N_("E978: Invalid operation for Blob"));
EXTERN char e_toomanyarg[] INIT(= N_("E118: Too many arguments for function: %s"));
EXTERN char e_dictkey[] INIT(= N_("E716: Key not present in Dictionary: %s"));
EXTERN char e_listreq[] INIT(= N_("E714: List required"));
+EXTERN char e_listblobreq[] INIT(= N_("E897: List or Blob required"));
EXTERN char e_listdictarg[] INIT(= N_("E712: Argument of %s must be a List or Dictionary"));
+EXTERN char e_listdictblobarg[] INIT(= N_("E896: Argument of %s must be a List, Dictionary or Blob"));
#endif
#ifdef FEAT_QUICKFIX
EXTERN char e_readerrf[] INIT(= N_("E47: Error while reading errorfile"));
diff --git a/src/testdir/test_blob.vim b/src/testdir/test_blob.vim
index 1feab3415..964ed2279 100644
--- a/src/testdir/test_blob.vim
+++ b/src/testdir/test_blob.vim
@@ -32,6 +32,7 @@ func Test_blob_create()
call assert_fails('let b = 0z1.1')
call assert_fails('let b = 0z.')
call assert_fails('let b = 0z001122.')
+ call assert_fails('call get("", 1)', 'E896:')
endfunc
" assignment to a blob
@@ -182,6 +183,7 @@ func Test_blob_add()
call assert_equal(0z00112233, b)
call assert_fails('call add(b, [9])', 'E745:')
+ call assert_fails('call add("", 0x01)', 'E897:')
endfunc
func Test_blob_empty()
@@ -219,7 +221,7 @@ func Test_blob_func_remove()
call assert_fails("call remove(b, 5)", 'E979:')
call assert_fails("call remove(b, 1, 5)", 'E979:')
call assert_fails("call remove(b, 3, 2)", 'E979:')
- call assert_fails("call remove(1, 0)", 'E712:')
+ call assert_fails("call remove(1, 0)", 'E896:')
call assert_fails("call remove(b, b)", 'E974:')
endfunc
@@ -255,7 +257,7 @@ func Test_blob_index()
call assert_equal(2, index(0z11111111, 0x11, -2))
call assert_equal(3, index(0z11110111, 0x11, -2))
- call assert_fails('call index("asdf", 0)', 'E714:')
+ call assert_fails('call index("asdf", 0)', 'E897:')
endfunc
func Test_blob_insert()
diff --git a/src/testdir/test_listdict.vim b/src/testdir/test_listdict.vim
index 19f137357..6c90cbc1b 100644
--- a/src/testdir/test_listdict.vim
+++ b/src/testdir/test_listdict.vim
@@ -139,7 +139,7 @@ func Test_list_func_remove()
call assert_fails("call remove(l, 5)", 'E684:')
call assert_fails("call remove(l, 1, 5)", 'E684:')
call assert_fails("call remove(l, 3, 2)", 'E16:')
- call assert_fails("call remove(1, 0)", 'E712:')
+ call assert_fails("call remove(1, 0)", 'E896:')
call assert_fails("call remove(l, l)", 'E745:')
endfunc
@@ -596,6 +596,8 @@ func Test_reverse_sort_uniq()
call assert_equal(['bar', 'BAR', 'Bar', 'Foo', 'FOO', 'foo', 'FOOBAR', -1, 0, 0, 0.22, 1.0e-15, 12, 18, 22, 255, 7, 9, [], {}], sort(copy(l), 1))
call assert_equal(['bar', 'BAR', 'Bar', 'Foo', 'FOO', 'foo', 'FOOBAR', -1, 0, 0, 0.22, 1.0e-15, 12, 18, 22, 255, 7, 9, [], {}], sort(copy(l), 'i'))
call assert_equal(['BAR', 'Bar', 'FOO', 'FOOBAR', 'Foo', 'bar', 'foo', -1, 0, 0, 0.22, 1.0e-15, 12, 18, 22, 255, 7, 9, [], {}], sort(copy(l)))
+
+ call assert_fails('call reverse("")', 'E898:')
endfunc
" splitting a string to a List
diff --git a/src/version.c b/src/version.c
index 0aa15d72e..cef2e4b5c 100644
--- a/src/version.c
+++ b/src/version.c
@@ -792,6 +792,8 @@ static char *(features[]) =
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
+ 793,
+/**/
792,
/**/
791,