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;
}
}