# HG changeset patch # User Christian Brabandt # Date 1697052608 -7200 # Node ID 9dee279ce1c475f4d20dc468f1ef305a4b9b2ee8 # Parent 98b41f1adbc1bc0b927fa98e6a8f0ba8ab8a5a02 patch 9.0.2012: Vim9: error message can be more accurate Commit: https://github.com/vim/vim/commit/f8da32461969a657ce9f132f35ddbec4068d3296 Author: Ernie Rael Date: Wed Oct 11 21:22:12 2023 +0200 patch 9.0.2012: Vim9: error message can be more accurate Problem: Vim9: error message can be more accurate Solution: Fix the error messages Fix message for some single use error messages. closes: #13312 Signed-off-by: Christian Brabandt Co-authored-by: Ernie Rael diff --git a/src/errors.h b/src/errors.h --- a/src/errors.h +++ b/src/errors.h @@ -1771,8 +1771,8 @@ EXTERN char e_less_targets_than_list_ite INIT(= N_("E687: Less targets than List items")); EXTERN char e_more_targets_than_list_items[] INIT(= N_("E688: More targets than List items")); -EXTERN char e_can_only_index_list_dictionary_or_blob[] - INIT(= N_("E689: Can only index a List, Dictionary or Blob")); +EXTERN char e_index_not_allowed_after_str_str[] + INIT(= N_("E689: Index not allowed after a %s: %s")); EXTERN char e_missing_in_after_for[] INIT(= N_("E690: Missing \"in\" after :for")); EXTERN char e_can_only_compare_list_with_list[] @@ -3081,8 +3081,8 @@ EXTERN char e_libsodium_decryption_faile #ifdef FEAT_EVAL EXTERN char e_no_white_space_allowed_after_str_str[] INIT(= N_("E1202: No white space allowed after '%s': %s")); -EXTERN char e_dot_can_only_be_used_on_dictionary_str[] - INIT(= N_("E1203: Dot can only be used on a dictionary: %s")); +EXTERN char e_dot_not_allowed_after_str_str[] + INIT(= N_("E1203: Dot not allowed after a %s: %s")); #endif EXTERN char e_regexp_number_after_dot_pos_search_chr[] INIT(= N_("E1204: No Number allowed after .: '\\%%%c'")); diff --git a/src/eval.c b/src/eval.c --- a/src/eval.c +++ b/src/eval.c @@ -1375,9 +1375,9 @@ get_lval( && v_type != VAR_OBJECT && v_type != VAR_CLASS) { - // TODO: have a message with obj/class, not just dict, if (!quiet) - semsg(_(e_dot_can_only_be_used_on_dictionary_str), name); + semsg(_(e_dot_not_allowed_after_str_str), + vartype_name(v_type), name); return NULL; } if (v_type != VAR_LIST @@ -1386,9 +1386,9 @@ get_lval( && v_type != VAR_OBJECT && v_type != VAR_CLASS) { - // TODO: have a message with obj/class, not just dict/list/blob, if (!quiet) - emsg(_(e_can_only_index_list_dictionary_or_blob)); + semsg(_(e_index_not_allowed_after_str_str), + vartype_name(v_type), name); return NULL; } diff --git a/src/testdir/test_listdict.vim b/src/testdir/test_listdict.vim --- a/src/testdir/test_listdict.vim +++ b/src/testdir/test_listdict.vim @@ -435,13 +435,13 @@ func Test_dict_assign() let n = 0 let n.key = 3 END - call v9.CheckScriptFailure(lines, 'E1203: Dot can only be used on a dictionary: n.key = 3') + call v9.CheckScriptFailure(lines, 'E1203: Dot not allowed after a number: n.key = 3') let lines =<< trim END vim9script var n = 0 n.key = 3 END - call v9.CheckScriptFailure(lines, 'E1203: Dot can only be used on a dictionary: n.key = 3') + call v9.CheckScriptFailure(lines, 'E1203: Dot not allowed after a number: n.key = 3') let lines =<< trim END var n = 0 n.key = 3 diff --git a/src/testdir/test_vim9_assign.vim b/src/testdir/test_vim9_assign.vim --- a/src/testdir/test_vim9_assign.vim +++ b/src/testdir/test_vim9_assign.vim @@ -1278,7 +1278,7 @@ def Test_assignment_dict() var n: any n.key = 5 END - v9.CheckDefExecAndScriptFailure(lines, ['E1148:', 'E1203: Dot can only be used on a dictionary: n.key = 5'], 2) + v9.CheckDefExecAndScriptFailure(lines, ['E1148:', 'E1203: Dot not allowed after a number: n.key = 5'], 2) enddef def Test_assignment_local() diff --git a/src/version.c b/src/version.c --- a/src/version.c +++ b/src/version.c @@ -705,6 +705,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ /**/ + 2012, +/**/ 2011, /**/ 2010,