Patch 9.0.0740
Problem:    prop_add_list() gives multiple errors for invalid argument.
Solution:   Only give one error message.
Files:      src/textprop.c, src/globals.h, src/testdir/test_textprop.vim


*** ../vim-9.0.0739/src/textprop.c      2022-09-17 18:57:32.500190048 +0100
--- src/textprop.c      2022-10-13 13:59:49.051327164 +0100
***************
*** 353,358 ****
--- 353,359 ----
      linenr_T  end_lnum;
      colnr_T   end_col;
      int               error = FALSE;
+     int               prev_did_emsg = did_emsg;
  
      if (check_for_dict_arg(argvars, 0) == FAIL
            || check_for_list_arg(argvars, 1) == FAIL)
***************
*** 389,401 ****
  
        pos_list = li->li_tv.vval.v_list;
        start_lnum = list_find_nr(pos_list, 0L, &error);
!       start_col = list_find_nr(pos_list, 1L, &error);
!       end_lnum = list_find_nr(pos_list, 2L, &error);
!       end_col = list_find_nr(pos_list, 3L, &error);
        if (error || start_lnum <= 0 || start_col <= 0
!               || end_lnum <= 0 || end_col <= 0)
        {
!           emsg(_(e_invalid_argument));
            return;
        }
        if (prop_add_one(buf, type_name, id, NULL, 0, 0, start_lnum, end_lnum,
--- 390,406 ----
  
        pos_list = li->li_tv.vval.v_list;
        start_lnum = list_find_nr(pos_list, 0L, &error);
!       if (!error)
!           start_col = list_find_nr(pos_list, 1L, &error);
!       if (!error)
!           end_lnum = list_find_nr(pos_list, 2L, &error);
!       if (!error)
!           end_col = list_find_nr(pos_list, 3L, &error);
        if (error || start_lnum <= 0 || start_col <= 0
!                 || end_lnum <= 0 || end_col <= 0)
        {
!           if (prev_did_emsg == did_emsg)
!               emsg(_(e_invalid_argument));
            return;
        }
        if (prop_add_one(buf, type_name, id, NULL, 0, 0, start_lnum, end_lnum,
*** ../vim-9.0.0739/src/globals.h       2022-10-04 16:23:39.014042183 +0100
--- src/globals.h       2022-10-13 13:46:48.544762959 +0100
***************
*** 219,226 ****
  
  EXTERN int    did_endif INIT(= FALSE);    // just had ":endif"
  #endif
! EXTERN int    did_emsg;                   // set by emsg() when the message
!                                           // is displayed or thrown
  #ifdef FEAT_EVAL
  EXTERN int    did_emsg_silent INIT(= 0);  // incremented by emsg() when
                                            // emsg_silent was set and did_emsg
--- 219,226 ----
  
  EXTERN int    did_endif INIT(= FALSE);    // just had ":endif"
  #endif
! EXTERN int    did_emsg;                   // incremented by emsg() when a
!                                           // message is displayed or thrown
  #ifdef FEAT_EVAL
  EXTERN int    did_emsg_silent INIT(= 0);  // incremented by emsg() when
                                            // emsg_silent was set and did_emsg
*** ../vim-9.0.0739/src/testdir/test_textprop.vim       2022-10-11 
21:01:44.382815392 +0100
--- src/testdir/test_textprop.vim       2022-10-13 13:59:32.511355730 +0100
***************
*** 383,388 ****
--- 383,391 ----
    call assert_fails('call prop_add_list(test_null_dict(), [[2, 2, 2]])', 
'E965:')
    call assert_fails('call prop_add_list(#{type: "one"}, test_null_list())', 
'E1298:')
    call assert_fails('call prop_add_list(#{type: "one"}, [test_null_list()])', 
'E714:')
+ 
+   " only one error for multiple wrong values
+   call assert_fails('call prop_add_list(#{type: "one"}, [[{}, [], 0z00, 
0.3]])', ['E728:', 'E728:'])
    call DeletePropTypes()
    bw!
  endfunc
*** ../vim-9.0.0739/src/version.c       2022-10-13 13:17:37.519640382 +0100
--- src/version.c       2022-10-13 13:47:57.088625601 +0100
***************
*** 701,702 ****
--- 701,704 ----
  {   /* Add new patch number below this line */
+ /**/
+     740,
  /**/

-- 
There are three kinds of people: Those who can count & those who can't.

 /// Bram Moolenaar -- [email protected] -- http://www.Moolenaar.net   \\\
///                                                                      \\\
\\\        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ ///
 \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///

-- 
-- 
You received this message from the "vim_dev" maillist.
Do not top-post! Type your reply below the text you are replying to.
For more information, visit http://www.vim.org/maillist.php

--- 
You received this message because you are subscribed to the Google Groups 
"vim_dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/vim_dev/20221013130116.CAB871C15EB%40moolenaar.net.

Raspunde prin e-mail lui