patch 8.2.3634: error for already defined function uses wrong line number
Problem: Error for already defined function uses wrong line number.
Solution: Set SOURCING_LNUM before giving the error message. (closes #9085)
diff --git a/src/testdir/test_vim9_func.vim b/src/testdir/test_vim9_func.vim
index c8b821e..34f84f2 100644
--- a/src/testdir/test_vim9_func.vim
+++ b/src/testdir/test_vim9_func.vim
@@ -741,7 +741,18 @@
enddef
defcompile
END
- CheckScriptFailure(lines, "E1073:")
+ CheckScriptFailure(lines, "E1073:", 1)
+
+ lines =<< trim END
+ vim9script
+ def Func()
+ echo 'script'
+ enddef
+ def Func()
+ echo 'script'
+ enddef
+ END
+ CheckScriptFailure(lines, "E1073:", 5)
enddef
def DefListAll()
diff --git a/src/userfunc.c b/src/userfunc.c
index 95d9c4a..602d3b7 100644
--- a/src/userfunc.c
+++ b/src/userfunc.c
@@ -4256,6 +4256,7 @@
&& (fp->uf_script_ctx.sc_sid != current_sctx.sc_sid
|| fp->uf_script_ctx.sc_seq == current_sctx.sc_seq)))
{
+ SOURCING_LNUM = sourcing_lnum_top;
if (vim9script)
emsg_funcname(e_name_already_defined_str, name);
else
diff --git a/src/version.c b/src/version.c
index b53524f..fbbc961 100644
--- a/src/version.c
+++ b/src/version.c
@@ -758,6 +758,8 @@
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
+ 3634,
+/**/
3633,
/**/
3632,