]> granicus.if.org Git - vim/commitdiff
patch 9.0.0715: wrong argument for append() gives two error messages v9.0.0715
authorBram Moolenaar <Bram@vim.org>
Mon, 10 Oct 2022 15:08:16 +0000 (16:08 +0100)
committerBram Moolenaar <Bram@vim.org>
Mon, 10 Oct 2022 15:08:16 +0000 (16:08 +0100)
Problem:    Wrong argument for append() gives two error messages.
Solution:   When getting an error for a number argument don't try using it as
            a string. (closes #11335)

src/testdir/test_functions.vim
src/typval.c
src/version.c

index 85e27c6560c4a381c9d46bf9dfe9f6a8a41783b1..938a839bfdeb8b25ce5a3aaec3667d2af12f2fef 100644 (file)
@@ -950,6 +950,8 @@ func Test_append()
 
   " Using $ instead of '$' must give an error
   call assert_fails("call append($, 'foobar')", 'E116:')
+
+  call assert_fails("call append({}, '')", ['E728:', 'E728:'])
 endfunc
 
 " Test for setline()
index a4fdb782f1e6fef272d495f9e5dec6039c616e2e..d6f6196b58731b623a5a78a91faa658578201e2a 100644 (file)
@@ -2509,10 +2509,12 @@ eval_env_var(char_u **arg, typval_T *rettv, int evaluate)
 tv_get_lnum(typval_T *argvars)
 {
     linenr_T   lnum = -1;
+    int                did_emsg_before = did_emsg;
 
     if (argvars[0].v_type != VAR_STRING || !in_vim9script())
        lnum = (linenr_T)tv_get_number_chk(&argvars[0], NULL);
-    if (lnum <= 0 && argvars[0].v_type != VAR_NUMBER)
+    if (lnum <= 0 && did_emsg_before == did_emsg
+                                           && argvars[0].v_type != VAR_NUMBER)
     {
        int     fnum;
        pos_T   *fp;
index 772267eff6331c92c51b64896ee957281a996c03..564d69d8df5cc101ab918f6262b4ff912122fbf0 100644 (file)
@@ -699,6 +699,8 @@ static char *(features[]) =
 
 static int included_patches[] =
 {   /* Add new patch number below this line */
+/**/
+    715,
 /**/
     714,
 /**/