patch 8.2.2540: Vim9: no error for using script var name for argument

Problem:    Vim9: no error for using script var name for argument.
Solution:   Check for this error. (closes #7868)
diff --git a/src/proto/vim9compile.pro b/src/proto/vim9compile.pro
index 04c3c5e..410910f 100644
--- a/src/proto/vim9compile.pro
+++ b/src/proto/vim9compile.pro
@@ -1,4 +1,5 @@
 /* vim9compile.c */
+int script_var_exists(char_u *name, size_t len, int vim9script, cctx_T *cctx);
 int check_defined(char_u *p, size_t len, cctx_T *cctx);
 int check_compare_types(exprtype_T type, typval_T *tv1, typval_T *tv2);
 int use_typecheck(type_T *actual, type_T *expected);
diff --git a/src/testdir/test_vim9_func.vim b/src/testdir/test_vim9_func.vim
index c24d32f..05becd7 100644
--- a/src/testdir/test_vim9_func.vim
+++ b/src/testdir/test_vim9_func.vim
@@ -591,6 +591,15 @@
 
   lines =<< trim END
     vim9script
+    var name = 'piet'
+    def FuncOne(name: string)
+      echo nr
+    enddef
+  END
+  CheckScriptFailure(lines, 'E1054:')
+
+  lines =<< trim END
+    vim9script
     def FuncOne(nr: number)
       echo nr
     enddef
diff --git a/src/userfunc.c b/src/userfunc.c
index 450582c..8579c3b 100644
--- a/src/userfunc.c
+++ b/src/userfunc.c
@@ -80,6 +80,14 @@
 	    semsg(_("E125: Illegal argument: %s"), arg);
 	return arg;
     }
+
+    // Vim9 script: cannot use script var name for argument.
+    if (argtypes != NULL && script_var_exists(arg, p - arg, FALSE, NULL) == OK)
+    {
+	semsg(_(e_variable_already_declared_in_script), arg);
+	return arg;
+    }
+
     if (newargs != NULL && ga_grow(newargs, 1) == FAIL)
 	return arg;
     if (newargs != NULL)
diff --git a/src/version.c b/src/version.c
index b096340..25ea70b 100644
--- a/src/version.c
+++ b/src/version.c
@@ -751,6 +751,8 @@
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    2540,
+/**/
     2539,
 /**/
     2538,
diff --git a/src/vim9compile.c b/src/vim9compile.c
index c9591ad..0be2b29 100644
--- a/src/vim9compile.c
+++ b/src/vim9compile.c
@@ -337,7 +337,7 @@
  * "cctx" is NULL at the script level.
  * Returns OK or FAIL.
  */
-    static int
+    int
 script_var_exists(char_u *name, size_t len, int vim9script, cctx_T *cctx)
 {
     int		    is_vim9_script;