patch 8.2.4371: Vim9: can create a script variable from a legacy function

Problem:    Vim9: can create a script variable from a legacy function.
Solution:   Disallow creating a script variable from a function.
diff --git a/src/errors.h b/src/errors.h
index ef9e083..c5a2649 100644
--- a/src/errors.h
+++ b/src/errors.h
@@ -3234,4 +3234,6 @@
 	INIT(= N_("E1267: Function name must start with a capital: %s"));
 EXTERN char e_cannot_use_s_colon_in_vim9_script_str[]
 	INIT(= N_("E1268: Cannot use s: in Vim9 script: %s"));
+EXTERN char e_cannot_create_vim9_script_variable_in_function_str[]
+	INIT(= N_("E1269: Cannot create a Vim9 script variable in a function: %s"));
 #endif
diff --git a/src/evalvars.c b/src/evalvars.c
index 994b979..d182a0e 100644
--- a/src/evalvars.c
+++ b/src/evalvars.c
@@ -3504,6 +3504,12 @@
 	    semsg(_(e_cannot_use_str_itself_it_is_imported), name);
 	    goto failed;
 	}
+	if (!in_vim9script())
+	{
+	    semsg(_(e_cannot_create_vim9_script_variable_in_function_str),
+									 name);
+	    goto failed;
+	}
     }
 
     if (dest_tv == NULL)
diff --git a/src/testdir/test_vim9_script.vim b/src/testdir/test_vim9_script.vim
index eec19d9..9993c5e 100644
--- a/src/testdir/test_vim9_script.vim
+++ b/src/testdir/test_vim9_script.vim
@@ -3071,13 +3071,21 @@
   delete('Xforward')
 enddef
 
-def Test_declare_script_in_func()
+def Test_declare_script_var_in_func()
   var lines =<< trim END
       vim9script
       func Declare()
         let s:local = 123
       endfunc
       Declare()
+  END
+  v9.CheckScriptFailure(lines, 'E1269:')
+enddef
+        
+def Test_lock_script_var()
+  var lines =<< trim END
+      vim9script
+      var local = 123
       assert_equal(123, local)
 
       var error: string
diff --git a/src/version.c b/src/version.c
index b7fbbbd..3edb62d 100644
--- a/src/version.c
+++ b/src/version.c
@@ -751,6 +751,8 @@
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    4371,
+/**/
     4370,
 /**/
     4369,