summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBram Moolenaar <Bram@vim.org>2020-08-07 22:00:26 +0200
committerBram Moolenaar <Bram@vim.org>2020-08-07 22:00:26 +0200
commitfa211f3c6d27cf962b28f10e3c18b12dde4d20c3 (patch)
treeb460743f33d1d73b20089290a296ca87a0861b76
parent1c199f9c70446933677d5210f34d2b86eefa2a43 (diff)
downloadvim-git-fa211f3c6d27cf962b28f10e3c18b12dde4d20c3.tar.gz
patch 8.2.1391: Vim9: no error for shadowing a script functionv8.2.1391
Problem: Vim9: no error for shadowing a script function. Solution: Check for already defined items. (closes #6652)
-rw-r--r--src/testdir/test_vim9_script.vim12
-rw-r--r--src/version.c2
-rw-r--r--src/vim9compile.c2
3 files changed, 16 insertions, 0 deletions
diff --git a/src/testdir/test_vim9_script.vim b/src/testdir/test_vim9_script.vim
index c4a6f9a28..3f1997f6f 100644
--- a/src/testdir/test_vim9_script.vim
+++ b/src/testdir/test_vim9_script.vim
@@ -1780,6 +1780,18 @@ def Test_func_redefine_fails()
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 8b68bc164..978920e81 100644
--- a/src/version.c
+++ b/src/version.c
@@ -755,6 +755,8 @@ static char *(features[]) =
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 a6b4a27db..25da7f562 100644
--- a/src/vim9compile.c
+++ b/src/vim9compile.c
@@ -5462,6 +5462,8 @@ compile_assignment(char_u *arg, exarg_T *eap, cmdidx_T cmdidx, cctx_T *cctx)
semsg(_(e_unknown_var), name);
goto theend;
}
+ else if (check_defined(var_start, varlen, cctx) == FAIL)
+ goto theend;
}
}