comparison src/textprop.c @ 29994:86eb4aba16c3 v9.0.0335

patch 9.0.0335: checks for Dictionary argument often give a vague error Commit: https://github.com/vim/vim/commit/04c4c5746e15884768d2cb41370c3276a196cd4c Author: Yegappan Lakshmanan <yegappan@yahoo.com> Date: Tue Aug 30 19:48:24 2022 +0100 patch 9.0.0335: checks for Dictionary argument often give a vague error Problem: Checks for Dictionary argument often give a vague error message. Solution: Give a useful error message. (Yegappan Lakshmanan, closes https://github.com/vim/vim/issues/11009)
author Bram Moolenaar <Bram@vim.org>
date Tue, 30 Aug 2022 21:00:05 +0200
parents bfd08e50e2c0
children adb0de8be4ce
comparison
equal deleted inserted replaced
29993:8dd1900432a0 29994:86eb4aba16c3
147 || check_for_dict_arg(argvars, 2) == FAIL)) 147 || check_for_dict_arg(argvars, 2) == FAIL))
148 return; 148 return;
149 149
150 start_lnum = tv_get_number(&argvars[0]); 150 start_lnum = tv_get_number(&argvars[0]);
151 start_col = tv_get_number(&argvars[1]); 151 start_col = tv_get_number(&argvars[1]);
152 if (argvars[2].v_type != VAR_DICT) 152 if (check_for_dict_arg(argvars, 2) == FAIL)
153 { 153 return;
154 emsg(_(e_dictionary_required));
155 return;
156 }
157 154
158 rettv->vval.v_number = prop_add_common(start_lnum, start_col, 155 rettv->vval.v_number = prop_add_common(start_lnum, start_col,
159 argvars[2].vval.v_dict, curbuf, &argvars[2]); 156 argvars[2].vval.v_dict, curbuf, &argvars[2]);
160 } 157 }
161 158
1043 if (in_vim9script() 1040 if (in_vim9script()
1044 && (check_for_dict_arg(argvars, 0) == FAIL 1041 && (check_for_dict_arg(argvars, 0) == FAIL
1045 || check_for_opt_string_arg(argvars, 1) == FAIL)) 1042 || check_for_opt_string_arg(argvars, 1) == FAIL))
1046 return; 1043 return;
1047 1044
1048 if (argvars[0].v_type != VAR_DICT || argvars[0].vval.v_dict == NULL) 1045 if (check_for_nonnull_dict_arg(argvars, 0) == FAIL)
1049 { 1046 return;
1050 emsg(_(e_dictionary_required));
1051 return;
1052 }
1053 dict = argvars[0].vval.v_dict; 1047 dict = argvars[0].vval.v_dict;
1054 1048
1055 if (get_bufnr_from_arg(&argvars[0], &buf) == FAIL) 1049 if (get_bufnr_from_arg(&argvars[0], &buf) == FAIL)
1056 return; 1050 return;
1057 if (buf->b_ml.ml_mfp == NULL) 1051 if (buf->b_ml.ml_mfp == NULL)
1394 end_lnum = start_lnum; 1388 end_lnum = start_lnum;
1395 if (argvars[1].v_type != VAR_UNKNOWN) 1389 if (argvars[1].v_type != VAR_UNKNOWN)
1396 { 1390 {
1397 dict_T *d; 1391 dict_T *d;
1398 1392
1399 if (argvars[1].v_type != VAR_DICT) 1393 if (check_for_dict_arg(argvars, 1) == FAIL)
1400 {
1401 emsg(_(e_dictionary_required));
1402 return; 1394 return;
1403 }
1404 d = argvars[1].vval.v_dict; 1395 d = argvars[1].vval.v_dict;
1405 1396
1406 if (get_bufnr_from_arg(&argvars[1], &buf) == FAIL) 1397 if (get_bufnr_from_arg(&argvars[1], &buf) == FAIL)
1407 return; 1398 return;
1408 1399
1497 || check_for_opt_number_arg(argvars, 1) == FAIL 1488 || check_for_opt_number_arg(argvars, 1) == FAIL
1498 || (argvars[1].v_type != VAR_UNKNOWN 1489 || (argvars[1].v_type != VAR_UNKNOWN
1499 && check_for_opt_number_arg(argvars, 2) == FAIL))) 1490 && check_for_opt_number_arg(argvars, 2) == FAIL)))
1500 return; 1491 return;
1501 1492
1502 if (argvars[0].v_type != VAR_DICT || argvars[0].vval.v_dict == NULL) 1493 if (check_for_nonnull_dict_arg(argvars, 0) == FAIL)
1503 { 1494 return;
1504 emsg(_(e_invalid_argument));
1505 return;
1506 }
1507 1495
1508 if (argvars[1].v_type != VAR_UNKNOWN) 1496 if (argvars[1].v_type != VAR_UNKNOWN)
1509 { 1497 {
1510 start = tv_get_number(&argvars[1]); 1498 start = tv_get_number(&argvars[1]);
1511 end = start; 1499 end = start;