From d604d78e7b2e63d118814d0fa0b4b702ec52aeed Mon Sep 17 00:00:00 2001 From: Bram Moolenaar Date: Sat, 20 Nov 2021 21:46:20 +0000 Subject: [PATCH] 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) --- src/testdir/test_vim9_func.vim | 13 ++++++++++++- src/userfunc.c | 1 + src/version.c | 2 ++ 3 files changed, 15 insertions(+), 1 deletion(-) diff --git a/src/testdir/test_vim9_func.vim b/src/testdir/test_vim9_func.vim index c8b821e75..34f84f251 100644 --- a/src/testdir/test_vim9_func.vim +++ b/src/testdir/test_vim9_func.vim @@ -741,7 +741,18 @@ def Test_nested_global_function() 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 95d9c4a94..602d3b79e 100644 --- a/src/userfunc.c +++ b/src/userfunc.c @@ -4256,6 +4256,7 @@ define_function(exarg_T *eap, char_u *name_arg) && (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 b53524ff1..fbbc961bc 100644 --- a/src/version.c +++ b/src/version.c @@ -757,6 +757,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ +/**/ + 3634, /**/ 3633, /**/ -- 2.50.1