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 <cb@256bit.org>
Co-authored-by: Ernie Rael <errael@raelity.com>
diff --git a/src/errors.h b/src/errors.h
index 2474e27..50cf669 100644
--- a/src/errors.h
+++ b/src/errors.h
@@ -1771,8 +1771,8 @@
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 @@
#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
index 93109ef..8b26eb1 100644
--- a/src/eval.c
+++ b/src/eval.c
@@ -1375,9 +1375,9 @@
&& 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 @@
&& 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
index b7c8ad7..09e73ef 100644
--- a/src/testdir/test_listdict.vim
+++ b/src/testdir/test_listdict.vim
@@ -435,13 +435,13 @@
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
index 07afadb..3a18777 100644
--- a/src/testdir/test_vim9_assign.vim
+++ b/src/testdir/test_vim9_assign.vim
@@ -1278,7 +1278,7 @@
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
index 441acfd..5b91906 100644
--- a/src/version.c
+++ b/src/version.c
@@ -705,6 +705,8 @@
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
+ 2012,
+/**/
2011,
/**/
2010,