Mercurial > vim
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; |