changeset 28123:e5fcd1256ee3 v8.2.4586

patch 8.2.4586: Vim9: no error for using lower case name for "func" argument Commit: https://github.com/vim/vim/commit/1d9cef769d6c91d9a58a9c3c1c8ffe3da3570871 Author: Bram Moolenaar <Bram@vim.org> Date: Thu Mar 17 16:30:03 2022 +0000 patch 8.2.4586: Vim9: no error for using lower case name for "func" argument Problem: Vim9: no error for using lower case name for "func" argument. (Ernie Rael) Solution: Check the name as soon as the type is known.
author Bram Moolenaar <Bram@vim.org>
date Thu, 17 Mar 2022 17:45:03 +0100
parents 1f4bd581898f
children 72a573de6f5a
files src/testdir/test_vim9_func.vim src/userfunc.c src/version.c
diffstat 3 files changed, 14 insertions(+), 4 deletions(-) [+]
line wrap: on
line diff
--- a/src/testdir/test_vim9_func.vim
+++ b/src/testdir/test_vim9_func.vim
@@ -1479,12 +1479,12 @@ def Test_pass_legacy_lambda_to_def_func(
 
   lines =<< trim END
       vim9script
-      def g:TestFunc(f: func)
+      def g:TestFunc(F: func)
       enddef
       legacy call g:TestFunc({-> 0})
       delfunc g:TestFunc
 
-      def g:TestFunc(f: func(number))
+      def g:TestFunc(F: func(number))
       enddef
       legacy call g:TestFunc({nr -> 0})
       delfunc g:TestFunc
@@ -3788,8 +3788,8 @@ def Test_check_func_arg_types()
         return x + 1
       enddef
 
-      def G(g: func): dict<func>
-        return {f: g}
+      def G(Fg: func): dict<func>
+        return {f: Fg}
       enddef
 
       def H(d: dict<func>): string
@@ -3799,6 +3799,8 @@ def Test_check_func_arg_types()
 
   v9.CheckScriptSuccess(lines + ['echo H(G(F1))'])
   v9.CheckScriptFailure(lines + ['echo H(G(F2))'], 'E1013:')
+
+  v9.CheckScriptFailure(lines + ['def SomeFunc(ff: func)', 'enddef'], 'E704:')
 enddef
 
 def Test_call_func_with_null()
--- a/src/userfunc.c
+++ b/src/userfunc.c
@@ -429,6 +429,12 @@ parse_argument_types(ufunc_T *fp, garray
 		if (type == NULL)
 		    return FAIL;
 		fp->uf_arg_types[i] = type;
+		if (i < fp->uf_args.ga_len
+			&& (type->tt_type == VAR_FUNC
+			    || type->tt_type == VAR_PARTIAL)
+			&& var_wrong_func_name(
+				    ((char_u **)fp->uf_args.ga_data)[i], TRUE))
+		    return FAIL;
 	    }
 	}
     }
--- a/src/version.c
+++ b/src/version.c
@@ -751,6 +751,8 @@ static char *(features[]) =
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    4586,
+/**/
     4585,
 /**/
     4584,