patch 8.2.1391: Vim9: no error for shadowing a script function

Problem:    Vim9: no error for shadowing a script function.
Solution:   Check for already defined items. (closes #6652)
diff --git a/src/testdir/test_vim9_script.vim b/src/testdir/test_vim9_script.vim
index c4a6f9a..3f1997f 100644
--- a/src/testdir/test_vim9_script.vim
+++ b/src/testdir/test_vim9_script.vim
@@ -1780,6 +1780,18 @@
     enddef
   END
   CheckScriptFailure(lines, 'E1073:')
+
+  lines =<< trim END
+    vim9script
+    def Foo(): string
+      return 'foo'
+      enddef
+    def Func()
+      let  Foo = {-> 'lambda'}
+    enddef
+    defcompile
+  END
+  CheckScriptFailure(lines, 'E1073:')
 enddef
 
 def Test_fixed_size_list()
diff --git a/src/version.c b/src/version.c
index 8b68bc1..978920e 100644
--- a/src/version.c
+++ b/src/version.c
@@ -755,6 +755,8 @@
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    1391,
+/**/
     1390,
 /**/
     1389,
diff --git a/src/vim9compile.c b/src/vim9compile.c
index a6b4a27..25da7f5 100644
--- a/src/vim9compile.c
+++ b/src/vim9compile.c
@@ -5462,6 +5462,8 @@
 			semsg(_(e_unknown_var), name);
 			goto theend;
 		    }
+		    else if (check_defined(var_start, varlen, cctx) == FAIL)
+			goto theend;
 		}
 	    }