# HG changeset patch # User Christian Brabandt # Date 1697882403 -7200 # Node ID 2c66a4fe1513231c33d6b76f70519c5ce60c4e7e # Parent 9f55ea4702b10f4a9c5612f62d6894a12258a20f patch 9.0.2057: Vim9: no strict type checks for funcrefs varargs Commit: https://github.com/vim/vim/commit/3ec6c1fe3bb1b366b710d3e7226f7eed3be1801a Author: Ernie Rael Date: Sat Oct 21 11:45:38 2023 +0200 patch 9.0.2057: Vim9: no strict type checks for funcrefs varargs Problem: Vim9: no strict type checks for funcrefs varargs Solution: Perform strict type checking when declaring funcrefs with vararg declaration, add tests closes: #13397 Signed-off-by: Christian Brabandt Co-authored-by: Ernie Rael diff --git a/runtime/doc/tags b/runtime/doc/tags --- a/runtime/doc/tags +++ b/runtime/doc/tags @@ -11010,6 +11010,7 @@ vim9-differences vim9.txt /*vim9-differe vim9-export vim9.txt /*vim9-export* vim9-false-true vim9.txt /*vim9-false-true* vim9-final vim9.txt /*vim9-final* +vim9-func-declaration vim9.txt /*vim9-func-declaration* vim9-function-defined-later vim9.txt /*vim9-function-defined-later* vim9-gotchas vim9.txt /*vim9-gotchas* vim9-ignored-argument vim9.txt /*vim9-ignored-argument* diff --git a/runtime/doc/vim9.txt b/runtime/doc/vim9.txt --- a/runtime/doc/vim9.txt +++ b/runtime/doc/vim9.txt @@ -1468,7 +1468,7 @@ return value) results in error *E1031* There is no array type, use list<{type}> instead. For a list constant an efficient implementation is used that avoids allocating a lot of small pieces of memory. - *E1005* *E1007* + *vim9-func-declaration* *E1005* *E1007* A partial and function can be declared in more or less specific ways: func any kind of function reference, no type checking for arguments or return value @@ -1669,6 +1669,26 @@ Same for |extend()|, use |extendnew()| i |flattennew()| instead. Since |flatten()| is intended to always change the type, it can not be used in Vim9 script. +Assigning to a funcref with specified arguments (see |vim9-func-declaration|) +does strict type checking of the arguments. For variable number of arguments +the type must match: > + var FuncRef: func(string, number, bool): number + FuncRef = (v1: string, v2: number, v3: bool) => 777 # OK + FuncRef = (v1: string, v2: number, v3: number) => 777 # Error! + # variable number of arguments must have same type + var FuncVA: func(...list): number + FuncVA = (...v: list): number => v # Error! + FuncVA = (...v: list): number => v # OK, `any` runtime check + FuncVA = (v1: string, v: string2): number => 333 # Error! + FuncVA = (v: list): number => 3 # Error! + +If the destinataion funcref has no specified arguments, then there is no +argument type checking: > + var FuncUnknownArgs: func: number + FuncUnknownArgs = (v): number => v # OK + FuncUnknownArgs = (v1: string, v2: string): number => 3 # OK +< FuncUnknownArgs = (...v1: list): number => 333 # OK + *E1211* *E1217* *E1218* *E1219* *E1220* *E1221* *E1222* *E1223* *E1224* *E1225* *E1226* *E1227* *E1228* *E1238* *E1250* *E1251* *E1252* *E1256* 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 @@ -1890,7 +1890,7 @@ def Test_assign_funcref_args() var FuncAnyVA: func(...any): number FuncAnyVA = (v): number => v END - v9.CheckScriptFailure(lines, 'E1012: Type mismatch; expected func(...any): number but got func(any): number') + v9.CheckScriptFailure(lines, 'E1180: Variable arguments type must be a list: any') # varargs must match lines =<< trim END @@ -1898,7 +1898,7 @@ def Test_assign_funcref_args() var FuncAnyVA: func(...any): number FuncAnyVA = (v1, v2): number => v1 + v2 END - v9.CheckScriptFailure(lines, 'E1012: Type mismatch; expected func(...any): number but got func(any, any): number') + v9.CheckScriptFailure(lines, 'E1180: Variable arguments type must be a list: any') # varargs must match lines =<< trim END @@ -1906,7 +1906,7 @@ def Test_assign_funcref_args() var FuncAnyVA: func(...any): number FuncAnyVA = (v1: list): number => 3 END - v9.CheckScriptFailure(lines, 'E1012: Type mismatch; expected func(...any): number but got func(list): number') + v9.CheckScriptFailure(lines, 'E1180: Variable arguments type must be a list: any') enddef def Test_assign_funcref_arg_any() diff --git a/src/testdir/test_vim9_func.vim b/src/testdir/test_vim9_func.vim index 701a2f085dd3a13a8d58e75f6c3ee8700d00c112..cbbd5726403016459946e79a4c320dd082df6392 GIT binary patch literal 106639 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 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 */ /**/ + 2057, +/**/ 2056, /**/ 2055, diff --git a/src/vim9type.c b/src/vim9type.c --- a/src/vim9type.c +++ b/src/vim9type.c @@ -1231,6 +1231,15 @@ parse_type(char_u **arg, garray_T *type_ type = parse_type(&p, type_gap, give_error); if (type == NULL) return NULL; + if ((flags & TTFLAG_VARARGS) != 0 + && type->tt_type != VAR_LIST) + { + char *tofree; + semsg(_(e_variable_arguments_type_must_be_list_str), + type_name(type, &tofree)); + vim_free(tofree); + return NULL; + } arg_type[argcount++] = type; // Nothing comes after "...{type}".