comparison src/evalfunc.c @ 30043:fd855ad74887 v9.0.0359

patch 9.0.0359: error message for wrong argument type is not specific Commit: https://github.com/vim/vim/commit/8deb2b30c77035bb682ccf80b781455ac1d6038b Author: Yegappan Lakshmanan <yegappan@yahoo.com> Date: Fri Sep 2 15:15:27 2022 +0100 patch 9.0.0359: error message for wrong argument type is not specific Problem: Error message for wrong argument type is not specific. Solution: Include more information in the error. (Yegappan Lakshmanan, closes #11037)
author Bram Moolenaar <Bram@vim.org>
date Fri, 02 Sep 2022 16:30:07 +0200
parents adb0de8be4ce
children be5b8d4616b2
comparison
equal deleted inserted replaced
30042:24d37e312b7b 30043:fd855ad74887
3605 static void 3605 static void
3606 f_deepcopy(typval_T *argvars, typval_T *rettv) 3606 f_deepcopy(typval_T *argvars, typval_T *rettv)
3607 { 3607 {
3608 varnumber_T noref = 0; 3608 varnumber_T noref = 0;
3609 3609
3610 if (in_vim9script() 3610 if (check_for_opt_bool_arg(argvars, 1) == FAIL)
3611 && (check_for_opt_bool_arg(argvars, 1) == FAIL))
3612 return; 3611 return;
3613 3612
3614 if (argvars[1].v_type != VAR_UNKNOWN) 3613 if (argvars[1].v_type != VAR_UNKNOWN)
3615 noref = tv_get_bool_chk(&argvars[1], NULL); 3614 noref = tv_get_bool_chk(&argvars[1], NULL);
3616 if (noref < 0 || noref > 1) 3615
3617 semsg(_(e_using_number_as_bool_nr), noref); 3616 item_copy(&argvars[0], rettv, TRUE, TRUE, noref == 0 ? get_copyID() : 0);
3618 else
3619 item_copy(&argvars[0], rettv, TRUE, TRUE,
3620 noref == 0 ? get_copyID() : 0);
3621 } 3617 }
3622 3618
3623 /* 3619 /*
3624 * "did_filetype()" function 3620 * "did_filetype()" function
3625 */ 3621 */
5255 * "gettext()" function 5251 * "gettext()" function
5256 */ 5252 */
5257 static void 5253 static void
5258 f_gettext(typval_T *argvars, typval_T *rettv) 5254 f_gettext(typval_T *argvars, typval_T *rettv)
5259 { 5255 {
5260 if (in_vim9script() && check_for_string_arg(argvars, 0) == FAIL) 5256 if (check_for_nonempty_string_arg(argvars, 0) == FAIL)
5261 return; 5257 return;
5262 5258
5263 if (argvars[0].v_type != VAR_STRING 5259 rettv->v_type = VAR_STRING;
5264 || argvars[0].vval.v_string == NULL 5260 rettv->vval.v_string = vim_strsave((char_u *)_(argvars[0].vval.v_string));
5265 || *argvars[0].vval.v_string == NUL)
5266 {
5267 semsg(_(e_invalid_argument_str), tv_get_string(&argvars[0]));
5268 }
5269 else
5270 {
5271 rettv->v_type = VAR_STRING;
5272 rettv->vval.v_string = vim_strsave(
5273 (char_u *)_(argvars[0].vval.v_string));
5274 }
5275 } 5261 }
5276 5262
5277 // for VIM_VERSION_ defines 5263 // for VIM_VERSION_ defines
5278 #include "version.h" 5264 #include "version.h"
5279 5265
9639 9625
9640 // third argument: action - 'a' for append and 'r' for replace. 9626 // third argument: action - 'a' for append and 'r' for replace.
9641 // default is to replace the stack. 9627 // default is to replace the stack.
9642 if (argvars[2].v_type == VAR_UNKNOWN) 9628 if (argvars[2].v_type == VAR_UNKNOWN)
9643 action = 'r'; 9629 action = 'r';
9644 else if (argvars[2].v_type == VAR_STRING) 9630 else if (check_for_string_arg(argvars, 2) == FAIL)
9631 return;
9632 else
9645 { 9633 {
9646 char_u *actstr; 9634 char_u *actstr;
9647 actstr = tv_get_string_chk(&argvars[2]); 9635 actstr = tv_get_string_chk(&argvars[2]);
9648 if (actstr == NULL) 9636 if (actstr == NULL)
9649 return; 9637 return;
9653 else 9641 else
9654 { 9642 {
9655 semsg(_(e_invalid_action_str_2), actstr); 9643 semsg(_(e_invalid_action_str_2), actstr);
9656 return; 9644 return;
9657 } 9645 }
9658 }
9659 else
9660 {
9661 emsg(_(e_string_required));
9662 return;
9663 } 9646 }
9664 9647
9665 if (set_tagstack(wp, d, action) == OK) 9648 if (set_tagstack(wp, d, action) == OK)
9666 rettv->vval.v_number = 0; 9649 rettv->vval.v_number = 0;
9667 } 9650 }