summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBram Moolenaar <Bram@vim.org>2022-05-29 17:13:24 +0100
committerBram Moolenaar <Bram@vim.org>2022-05-29 17:13:24 +0100
commit83bd7a974056fd61e142c791e79d9dd89acd5ba4 (patch)
tree845ed9a63d231ac200cf663640b58512b4b49c10
parentd28950f9540f77032cee0a3047b05bef50ea81dc (diff)
patch 8.2.5039: confusing error if first argument of popup_create() is wrongv8.2.5039
Problem: Confusing error if first argument of popup_create() is wrong. Solution: Give a more informative error.
-rw-r--r--src/errors.h4
-rw-r--r--src/popupwin.c6
-rw-r--r--src/testdir/dumps/Test_popup_settext_07.dump2
-rw-r--r--src/testdir/test_popupwin.vim7
-rw-r--r--src/version.c2
5 files changed, 17 insertions, 4 deletions
diff --git a/src/errors.h b/src/errors.h
index 3e5252c76b..8ca2a3e2f7 100644
--- a/src/errors.h
+++ b/src/errors.h
@@ -3284,3 +3284,7 @@ EXTERN char e_bitshift_ops_must_be_number[]
EXTERN char e_bitshift_ops_must_be_postive[]
INIT(= N_("E1283: Bitshift amount must be a positive number"));
#endif
+#if defined(FEAT_PROP_POPUP)
+EXTERN char e_argument_1_list_item_nr_dictionary_required[]
+ INIT(= N_("E1284: Argument 1, list item %d: Dictionary required"));
+#endif
diff --git a/src/popupwin.c b/src/popupwin.c
index 96874011e6..5074eaa652 100644
--- a/src/popupwin.c
+++ b/src/popupwin.c
@@ -1047,7 +1047,7 @@ add_popup_dicts(buf_T *buf, list_T *l)
{
if (li->li_tv.v_type != VAR_DICT)
{
- emsg(_(e_dictionary_required));
+ semsg(_(e_argument_1_list_item_nr_dictionary_required), lnum + 1);
return;
}
dict = li->li_tv.vval.v_dict;
@@ -1685,7 +1685,9 @@ popup_set_buffer_text(buf_T *buf, typval_T text)
if (l != NULL && l->lv_len > 0)
{
- if (l->lv_first->li_tv.v_type == VAR_STRING)
+ if (l->lv_first == &range_list_item)
+ emsg(_(e_using_number_as_string));
+ else if (l->lv_first->li_tv.v_type == VAR_STRING)
// list of strings
add_popup_strings(buf, l);
else
diff --git a/src/testdir/dumps/Test_popup_settext_07.dump b/src/testdir/dumps/Test_popup_settext_07.dump
index 146dec6775..2362aa7140 100644
--- a/src/testdir/dumps/Test_popup_settext_07.dump
+++ b/src/testdir/dumps/Test_popup_settext_07.dump
@@ -7,4 +7,4 @@
|~| @73
|~| @73
|~| @73
-|E+0#ffffff16#e000002|7|1|5|:| |D|i|c|t|i|o|n|a|r|y| |r|e|q|u|i|r|e|d| +0#0000000#ffffff0@31|0|,|0|-|1| @8|A|l@1|
+|E+0#ffffff16#e000002|1|0|2|4|:| |U|s|i|n|g| |a| |N|u|m|b|e|r| |a|s| |a| |S|t|r|i|n|g| +0#0000000#ffffff0@23|0|,|0|-|1| @8|A|l@1|
diff --git a/src/testdir/test_popupwin.vim b/src/testdir/test_popupwin.vim
index 178f235684..a78816b80f 100644
--- a/src/testdir/test_popupwin.vim
+++ b/src/testdir/test_popupwin.vim
@@ -1072,7 +1072,7 @@ func Test_popup_invalid_arguments()
call assert_fails('call popup_create("text", #{borderchars: "none"})', 'E714:')
call popup_clear()
- call assert_fails('call popup_create([#{text: "text"}, 666], {})', 'E715:')
+ call assert_fails('call popup_create([#{text: "text"}, 666], {})', 'E1284: Argument 1, list item 2: Dictionary required')
call popup_clear()
call assert_fails('call popup_create([#{text: "text", props: "none"}], {})', 'E714:')
call popup_clear()
@@ -1091,6 +1091,11 @@ func Test_popup_invalid_arguments()
call popup_clear()
call assert_fails('call popup_create("text", #{tabpage : 4})', 'E997:')
call popup_clear()
+
+ call assert_fails('call popup_create(range(10), {})', 'E1024:')
+ call popup_clear()
+ call assert_fails('call popup_create([1, 2], {})', 'E1284: Argument 1, list item 1: Dictionary required')
+ call popup_clear()
endfunc
func Test_win_execute_closing_curwin()
diff --git a/src/version.c b/src/version.c
index cc9768747c..9e51afe330 100644
--- a/src/version.c
+++ b/src/version.c
@@ -735,6 +735,8 @@ static char *(features[]) =
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
+ 5039,
+/**/
5038,
/**/
5037,