changeset 31784:6377d791dcd1 v9.0.1224

patch 9.0.1224: cannot call a :def function with a number for float argument Commit: https://github.com/vim/vim/commit/47bba53bdb6d59057887149e2eeb2071803e547e Author: Bram Moolenaar <Bram@vim.org> Date: Fri Jan 20 18:49:46 2023 +0000 patch 9.0.1224: cannot call a :def function with a number for float argument Problem: Cannot call a :def function with a number for a float argument. Solution: Accept a number as well, convert it to a float.
author Bram Moolenaar <Bram@vim.org>
date Fri, 20 Jan 2023 21:01:46 +0100
parents cdee4ac5eea0
children 2f3957acccad
files src/globals.h src/structs.h src/testdir/test_vim9_func.vim src/version.c src/vim9execute.c src/vim9type.c
diffstat 6 files changed, 159 insertions(+), 129 deletions(-) [+]
line wrap: on
line diff
--- a/src/globals.h
+++ b/src/globals.h
@@ -430,107 +430,111 @@ EXTERN int	garbage_collect_at_exit INIT(
 #define t_number_bool		(static_types[14])
 #define t_const_number_bool	(static_types[15])
 
-#define t_float			(static_types[16])
-#define t_const_float		(static_types[17])
+// t_number_float - number that can be used as a float
+#define t_number_float		(static_types[16])
+#define t_const_number_float	(static_types[17])
 
-#define t_string		(static_types[18])
-#define t_const_string		(static_types[19])
+#define t_float			(static_types[18])
+#define t_const_float		(static_types[19])
 
-#define t_blob			(static_types[20])
-#define t_const_blob		(static_types[21])
+#define t_string		(static_types[20])
+#define t_const_string		(static_types[21])
 
-#define t_blob_null		(static_types[22])
-#define t_const_blob_null	(static_types[23])
+#define t_blob			(static_types[22])
+#define t_const_blob		(static_types[23])
+
+#define t_blob_null		(static_types[24])
+#define t_const_blob_null	(static_types[25])
 
-#define t_job			(static_types[24])
-#define t_const_job		(static_types[25])
+#define t_job			(static_types[26])
+#define t_const_job		(static_types[27])
 
-#define t_channel		(static_types[26])
-#define t_const_channel		(static_types[27])
+#define t_channel		(static_types[28])
+#define t_const_channel		(static_types[29])
 
 // t_number_or_string - Special value used for @#.
-#define t_number_or_string	(static_types[28])
-#define t_const_number_or_string (static_types[29])
+#define t_number_or_string	(static_types[30])
+#define t_const_number_or_string (static_types[31])
 
 // t_func_unknown - function with any arguments and no or unknown return value
-#define t_func_unknown		(static_types[30])
-#define t_const_func_unknown	(static_types[31])
+#define t_func_unknown		(static_types[32])
+#define t_const_func_unknown	(static_types[33])
 
 // t_func_void - function with any arguments and no return value
-#define t_func_void		(static_types[32])
-#define t_const_func_void	(static_types[33])
+#define t_func_void		(static_types[34])
+#define t_const_func_void	(static_types[35])
 
-#define t_func_any		(static_types[34])
-#define t_const_func_any	(static_types[35])
+#define t_func_any		(static_types[36])
+#define t_const_func_any	(static_types[37])
 
-#define t_func_number		(static_types[36])
-#define t_const_func_number	(static_types[37])
+#define t_func_number		(static_types[38])
+#define t_const_func_number	(static_types[39])
 
-#define t_func_string		(static_types[38])
-#define t_const_func_string	(static_types[39])
+#define t_func_string		(static_types[40])
+#define t_const_func_string	(static_types[41])
 
-#define t_func_bool		(static_types[40])
-#define t_const_func_bool	(static_types[41])
+#define t_func_bool		(static_types[42])
+#define t_const_func_bool	(static_types[43])
 
 // t_func_0_void - function without arguments and nor return value
-#define t_func_0_void		(static_types[42])
-#define t_const_func_0_void	(static_types[43])
+#define t_func_0_void		(static_types[44])
+#define t_const_func_0_void	(static_types[45])
 
-#define t_func_0_any		(static_types[44])
-#define t_const_func_0_any	(static_types[45])
+#define t_func_0_any		(static_types[46])
+#define t_const_func_0_any	(static_types[47])
 
-#define t_func_0_number		(static_types[46])
-#define t_const_func_0_number	(static_types[47])
+#define t_func_0_number		(static_types[48])
+#define t_const_func_0_number	(static_types[49])
 
-#define t_func_0_string		(static_types[48])
-#define t_const_func_0_string	(static_types[49])
+#define t_func_0_string		(static_types[50])
+#define t_const_func_0_string	(static_types[51])
 
-#define t_list_any		(static_types[50])
-#define t_const_list_any	(static_types[51])
+#define t_list_any		(static_types[52])
+#define t_const_list_any	(static_types[53])
 
-#define t_dict_any		(static_types[52])
-#define t_const_dict_any	(static_types[53])
+#define t_dict_any		(static_types[54])
+#define t_const_dict_any	(static_types[55])
 
-#define t_list_empty		(static_types[54])
-#define t_const_list_empty	(static_types[55])
+#define t_list_empty		(static_types[56])
+#define t_const_list_empty	(static_types[57])
 
-#define t_dict_empty		(static_types[56])
-#define t_const_dict_empty	(static_types[57])
+#define t_dict_empty		(static_types[58])
+#define t_const_dict_empty	(static_types[59])
 
-#define t_list_bool		(static_types[58])
-#define t_const_list_bool	(static_types[59])
+#define t_list_bool		(static_types[60])
+#define t_const_list_bool	(static_types[61])
 
-#define t_list_number		(static_types[60])
-#define t_const_list_number	(static_types[61])
+#define t_list_number		(static_types[62])
+#define t_const_list_number	(static_types[63])
 
-#define t_list_string		(static_types[62])
-#define t_const_list_string	(static_types[63])
+#define t_list_string		(static_types[64])
+#define t_const_list_string	(static_types[65])
 
-#define t_list_job		(static_types[64])
-#define t_const_list_job	(static_types[65])
+#define t_list_job		(static_types[66])
+#define t_const_list_job	(static_types[67])
 
-#define t_list_dict_any		(static_types[66])
-#define t_const_list_dict_any	(static_types[67])
+#define t_list_dict_any		(static_types[68])
+#define t_const_list_dict_any	(static_types[69])
 
-#define t_list_list_any		(static_types[68])
-#define t_const_list_list_any	(static_types[69])
+#define t_list_list_any		(static_types[70])
+#define t_const_list_list_any	(static_types[71])
 
-#define t_list_list_string	(static_types[70])
-#define t_const_list_list_string (static_types[71])
+#define t_list_list_string	(static_types[72])
+#define t_const_list_list_string (static_types[73])
 
-#define t_dict_bool		(static_types[72])
-#define t_const_dict_bool	(static_types[73])
+#define t_dict_bool		(static_types[74])
+#define t_const_dict_bool	(static_types[75])
 
-#define t_dict_number		(static_types[74])
-#define t_const_dict_number	(static_types[75])
+#define t_dict_number		(static_types[76])
+#define t_const_dict_number	(static_types[77])
 
-#define t_dict_string		(static_types[76])
-#define t_const_dict_string	(static_types[77])
+#define t_dict_string		(static_types[78])
+#define t_const_dict_string	(static_types[79])
 
-#define t_super			(static_types[78])
-#define t_const_super		(static_types[79])
+#define t_super			(static_types[80])
+#define t_const_super		(static_types[81])
 
-EXTERN type_T static_types[80]
+EXTERN type_T static_types[82]
 #ifdef DO_INIT
 = {
     // 0: t_unknown
@@ -565,131 +569,135 @@ EXTERN type_T static_types[80]
     {VAR_NUMBER, 0, 0, TTFLAG_STATIC|TTFLAG_BOOL_OK, NULL, NULL},
     {VAR_NUMBER, 0, 0, TTFLAG_STATIC|TTFLAG_BOOL_OK|TTFLAG_CONST, NULL, NULL},
 
-    // 16: t_float
+    // 16: t_number_float
+    {VAR_NUMBER, 0, 0, TTFLAG_STATIC|TTFLAG_FLOAT_OK, NULL, NULL},
+    {VAR_NUMBER, 0, 0, TTFLAG_STATIC|TTFLAG_FLOAT_OK|TTFLAG_CONST, NULL, NULL},
+
+    // 18: t_float
     {VAR_FLOAT, 0, 0, TTFLAG_STATIC, NULL, NULL},
     {VAR_FLOAT, 0, 0, TTFLAG_STATIC|TTFLAG_CONST, NULL, NULL},
 
-    // 18: t_string
-    {VAR_STRING, 0, 0, TTFLAG_STATIC, NULL, NULL},
-    {VAR_STRING, 0, 0, TTFLAG_STATIC|TTFLAG_CONST, NULL, NULL},
-
-    // 20: t_blob
-    {VAR_BLOB, 0, 0, TTFLAG_STATIC, NULL, NULL},
-    {VAR_BLOB, 0, 0, TTFLAG_STATIC|TTFLAG_CONST, NULL, NULL},
-
-    // 22: t_blob_null
-    {VAR_BLOB, 0, 0, TTFLAG_STATIC, &t_void, NULL},
-    {VAR_BLOB, 0, 0, TTFLAG_STATIC|TTFLAG_CONST, &t_void, NULL},
-
-    // 24: t_job
-    {VAR_JOB, 0, 0, TTFLAG_STATIC, NULL, NULL},
-    {VAR_JOB, 0, 0, TTFLAG_STATIC|TTFLAG_CONST, NULL, NULL},
-
-    // 26: t_channel
-    {VAR_CHANNEL, 0, 0, TTFLAG_STATIC, NULL, NULL},
-    {VAR_CHANNEL, 0, 0, TTFLAG_STATIC|TTFLAG_CONST, NULL, NULL},
-
-    // 28: t_number_or_string
+    // 20: t_string
     {VAR_STRING, 0, 0, TTFLAG_STATIC, NULL, NULL},
     {VAR_STRING, 0, 0, TTFLAG_STATIC|TTFLAG_CONST, NULL, NULL},
 
-    // 30: t_func_unknown
+    // 22: t_blob
+    {VAR_BLOB, 0, 0, TTFLAG_STATIC, NULL, NULL},
+    {VAR_BLOB, 0, 0, TTFLAG_STATIC|TTFLAG_CONST, NULL, NULL},
+
+    // 24: t_blob_null
+    {VAR_BLOB, 0, 0, TTFLAG_STATIC, &t_void, NULL},
+    {VAR_BLOB, 0, 0, TTFLAG_STATIC|TTFLAG_CONST, &t_void, NULL},
+
+    // 26: t_job
+    {VAR_JOB, 0, 0, TTFLAG_STATIC, NULL, NULL},
+    {VAR_JOB, 0, 0, TTFLAG_STATIC|TTFLAG_CONST, NULL, NULL},
+
+    // 28: t_channel
+    {VAR_CHANNEL, 0, 0, TTFLAG_STATIC, NULL, NULL},
+    {VAR_CHANNEL, 0, 0, TTFLAG_STATIC|TTFLAG_CONST, NULL, NULL},
+
+    // 30: t_number_or_string
+    {VAR_STRING, 0, 0, TTFLAG_STATIC, NULL, NULL},
+    {VAR_STRING, 0, 0, TTFLAG_STATIC|TTFLAG_CONST, NULL, NULL},
+
+    // 32: t_func_unknown
     {VAR_FUNC, -1, -1, TTFLAG_STATIC, &t_unknown, NULL},
     {VAR_FUNC, -1, -1, TTFLAG_STATIC|TTFLAG_CONST, &t_unknown, NULL},
 
-    // 32: t_func_void
+    // 34: t_func_void
     {VAR_FUNC, -1, 0, TTFLAG_STATIC, &t_void, NULL},
     {VAR_FUNC, -1, 0, TTFLAG_STATIC|TTFLAG_CONST, &t_void, NULL},
 
-    // 34: t_func_any
+    // 36: t_func_any
     {VAR_FUNC, -1, 0, TTFLAG_STATIC, &t_any, NULL},
     {VAR_FUNC, -1, 0, TTFLAG_STATIC|TTFLAG_CONST, &t_any, NULL},
 
-    // 36: t_func_number
+    // 38: t_func_number
     {VAR_FUNC, -1, 0, TTFLAG_STATIC, &t_number, NULL},
     {VAR_FUNC, -1, 0, TTFLAG_STATIC|TTFLAG_CONST, &t_number, NULL},
 
-    // 38: t_func_string
+    // 40: t_func_string
     {VAR_FUNC, -1, 0, TTFLAG_STATIC, &t_string, NULL},
     {VAR_FUNC, -1, 0, TTFLAG_STATIC|TTFLAG_CONST, &t_string, NULL},
 
-    // 40: t_func_bool
+    // 42: t_func_bool
     {VAR_FUNC, -1, 0, TTFLAG_STATIC, &t_bool, NULL},
     {VAR_FUNC, -1, 0, TTFLAG_STATIC|TTFLAG_CONST, &t_bool, NULL},
 
-    // 42: t_func_0_void
+    // 44: t_func_0_void
     {VAR_FUNC, 0, 0, TTFLAG_STATIC, &t_void, NULL},
     {VAR_FUNC, 0, 0, TTFLAG_STATIC|TTFLAG_CONST, &t_void, NULL},
 
-    // 44: t_func_0_any
+    // 46: t_func_0_any
     {VAR_FUNC, 0, 0, TTFLAG_STATIC, &t_any, NULL},
     {VAR_FUNC, 0, 0, TTFLAG_STATIC|TTFLAG_CONST, &t_any, NULL},
 
-    // 46: t_func_0_number
+    // 48: t_func_0_number
     {VAR_FUNC, 0, 0, TTFLAG_STATIC, &t_number, NULL},
     {VAR_FUNC, 0, 0, TTFLAG_STATIC|TTFLAG_CONST, &t_number, NULL},
 
-    // 48: t_func_0_string
+    // 50: t_func_0_string
     {VAR_FUNC, 0, 0, TTFLAG_STATIC, &t_string, NULL},
     {VAR_FUNC, 0, 0, TTFLAG_STATIC|TTFLAG_CONST, &t_string, NULL},
 
-    // 50: t_list_any
+    // 52: t_list_any
     {VAR_LIST, 0, 0, TTFLAG_STATIC, &t_any, NULL},
     {VAR_LIST, 0, 0, TTFLAG_STATIC|TTFLAG_CONST, &t_any, NULL},
 
-    // 52: t_dict_any
+    // 54: t_dict_any
     {VAR_DICT, 0, 0, TTFLAG_STATIC, &t_any, NULL},
     {VAR_DICT, 0, 0, TTFLAG_STATIC|TTFLAG_CONST, &t_any, NULL},
 
-    // 54: t_list_empty
+    // 56: t_list_empty
     {VAR_LIST, 0, 0, TTFLAG_STATIC, &t_unknown, NULL},
     {VAR_LIST, 0, 0, TTFLAG_STATIC|TTFLAG_CONST, &t_unknown, NULL},
 
-    // 56: t_dict_empty
+    // 58: t_dict_empty
     {VAR_DICT, 0, 0, TTFLAG_STATIC, &t_unknown, NULL},
     {VAR_DICT, 0, 0, TTFLAG_STATIC|TTFLAG_CONST, &t_unknown, NULL},
 
-    // 58: t_list_bool
+    // 60: t_list_bool
     {VAR_LIST, 0, 0, TTFLAG_STATIC, &t_bool, NULL},
     {VAR_LIST, 0, 0, TTFLAG_STATIC|TTFLAG_CONST, &t_bool, NULL},
 
-    // 60: t_list_number
+    // 62: t_list_number
     {VAR_LIST, 0, 0, TTFLAG_STATIC, &t_number, NULL},
     {VAR_LIST, 0, 0, TTFLAG_STATIC|TTFLAG_CONST, &t_number, NULL},
 
-    // 62: t_list_string
+    // 64: t_list_string
     {VAR_LIST, 0, 0, TTFLAG_STATIC, &t_string, NULL},
     {VAR_LIST, 0, 0, TTFLAG_STATIC|TTFLAG_CONST, &t_string, NULL},
 
-    // 64: t_list_job
+    // 66: t_list_job
     {VAR_LIST, 0, 0, TTFLAG_STATIC, &t_job, NULL},
     {VAR_LIST, 0, 0, TTFLAG_STATIC|TTFLAG_CONST, &t_job, NULL},
 
-    // 66: t_list_dict_any
+    // 68: t_list_dict_any
     {VAR_LIST, 0, 0, TTFLAG_STATIC, &t_dict_any, NULL},
     {VAR_LIST, 0, 0, TTFLAG_STATIC|TTFLAG_CONST, &t_dict_any, NULL},
 
-    // 68: t_list_list_any
+    // 70: t_list_list_any
     {VAR_LIST, 0, 0, TTFLAG_STATIC, &t_list_any, NULL},
     {VAR_LIST, 0, 0, TTFLAG_STATIC|TTFLAG_CONST, &t_list_any, NULL},
 
-    // 70: t_list_list_string
+    // 72: t_list_list_string
     {VAR_LIST, 0, 0, TTFLAG_STATIC, &t_list_string, NULL},
     {VAR_LIST, 0, 0, TTFLAG_STATIC|TTFLAG_CONST, &t_list_string, NULL},
 
-    // 72: t_dict_bool
+    // 74: t_dict_bool
     {VAR_DICT, 0, 0, TTFLAG_STATIC, &t_bool, NULL},
     {VAR_DICT, 0, 0, TTFLAG_STATIC|TTFLAG_CONST, &t_bool, NULL},
 
-    // 74: t_dict_number
+    // 76: t_dict_number
     {VAR_DICT, 0, 0, TTFLAG_STATIC, &t_number, NULL},
     {VAR_DICT, 0, 0, TTFLAG_STATIC|TTFLAG_CONST, &t_number, NULL},
 
-    // 76: t_dict_string
+    // 78: t_dict_string
     {VAR_DICT, 0, 0, TTFLAG_STATIC, &t_string, NULL},
     {VAR_DICT, 0, 0, TTFLAG_STATIC|TTFLAG_CONST, &t_string, NULL},
 
-    // 78: t_super (VAR_CLASS with tt_member set to &t_bool
+    // 80: t_super (VAR_CLASS with tt_member set to &t_bool
     {VAR_CLASS, 0, 0, TTFLAG_STATIC, &t_bool, NULL},
     {VAR_CLASS, 0, 0, TTFLAG_STATIC|TTFLAG_CONST, &t_bool, NULL},
 }
--- a/src/structs.h
+++ b/src/structs.h
@@ -1462,10 +1462,11 @@ typedef struct {
 
 #define TTFLAG_VARARGS	    0x01    // func args ends with "..."
 #define TTFLAG_BOOL_OK	    0x02    // can be converted to bool
-#define TTFLAG_NUMBER_OK    0x04    // tt_type is VAR_FLOAT, VAR_NUMBER is OK
-#define TTFLAG_STATIC	    0x08    // one of the static types, e.g. t_any
-#define TTFLAG_CONST	    0x10    // cannot be changed
-#define TTFLAG_SUPER	    0x20    // object from "super".
+#define TTFLAG_FLOAT_OK	    0x04    // number can be used/converted to float
+#define TTFLAG_NUMBER_OK    0x08    // number can be used for a float
+#define TTFLAG_STATIC	    0x10    // one of the static types, e.g. t_any
+#define TTFLAG_CONST	    0x20    // cannot be changed
+#define TTFLAG_SUPER	    0x40    // object from "super".
 
 typedef enum {
     ACCESS_PRIVATE,	// read/write only inside th class
index bf8b705ed5c00b91ac53089b0827d2c8323f675d..44a8d4b106532168bc50cb3c5058df8b641c5a62
GIT binary patch
literal 104218
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
P&L^{{voQMr+u8pG9DmY^
--- a/src/version.c
+++ b/src/version.c
@@ -696,6 +696,8 @@ static char *(features[]) =
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    1224,
+/**/
     1223,
 /**/
     1222,
--- a/src/vim9execute.c
+++ b/src/vim9execute.c
@@ -5822,12 +5822,25 @@ call_def_function(
 	}
 	else
 	{
-	    if (ufunc->uf_arg_types != NULL && idx < ufunc->uf_args.ga_len
-		    && check_typval_arg_type(
-			ufunc->uf_arg_types[idx], tv,
+	    int done = FALSE;
+	    if (ufunc->uf_arg_types != NULL && idx < ufunc->uf_args.ga_len)
+	    {
+		type_T *expected = ufunc->uf_arg_types[idx];
+		if (expected->tt_type == VAR_FLOAT && tv->v_type == VAR_NUMBER)
+		{
+		    // When a float is expected and a number was given, convert
+		    // the value.
+		    STACK_TV_BOT(0)->v_type = VAR_FLOAT;
+		    STACK_TV_BOT(0)->v_lock = 0;
+		    STACK_TV_BOT(0)->vval.v_float = tv->vval.v_number;
+		    done = TRUE;
+		}
+		else if (check_typval_arg_type(expected, tv,
 						   NULL, argv_idx + 1) == FAIL)
-		goto failed_early;
-	    copy_tv(tv, STACK_TV_BOT(0));
+		    goto failed_early;
+	}
+	    if (!done)
+		copy_tv(tv, STACK_TV_BOT(0));
 	}
 	++ectx.ec_stack.ga_len;
     }
--- a/src/vim9type.c
+++ b/src/vim9type.c
@@ -628,12 +628,17 @@ typval2type(typval_T *tv, int copyID, ga
 {
     type_T *type = typval2type_int(tv, copyID, type_gap, flags);
 
-    if (type != NULL && type != &t_bool
-	    && (tv->v_type == VAR_NUMBER
+    if (type != NULL)
+    {
+	if (type != &t_bool && (tv->v_type == VAR_NUMBER
 		    && (tv->vval.v_number == 0 || tv->vval.v_number == 1)))
-	// Number 0 and 1 and expression with "&&" or "||" can also be used for
-	// bool.
-	type = &t_number_bool;
+	    // Number 0 and 1 and expression with "&&" or "||" can also be used
+	    // for bool.
+	    type = &t_number_bool;
+	else if (type != &t_float && tv->v_type == VAR_NUMBER)
+	    // A number can also be used for float.
+	    type = &t_number_float;
+    }
     return type;
 }
 
@@ -821,9 +826,10 @@ check_type_maybe(
 		// Using number 0 or 1 for bool is OK.
 		return OK;
 	    if (expected->tt_type == VAR_FLOAT
-		    && (expected->tt_flags & TTFLAG_NUMBER_OK)
-					&& actual->tt_type == VAR_NUMBER)
-		// Using number where float is expected is OK here.
+		    && actual->tt_type == VAR_NUMBER
+		    && ((expected->tt_flags & TTFLAG_NUMBER_OK)
+			     || (actual->tt_flags & TTFLAG_FLOAT_OK)))
+		// Using a number where a float is expected is OK here.
 		return OK;
 	    if (give_msg)
 		type_mismatch_where(expected, actual, where);