summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBram Moolenaar <Bram@vim.org>2021-01-01 18:54:34 +0100
committerBram Moolenaar <Bram@vim.org>2021-01-01 18:54:34 +0100
commitb8ba9b919708f44b718c17f1fec85b1df8050a17 (patch)
tree190e855888a18be913173b5eab36772e9cb15f72
parent5178b1b02fc96f42d62199a4be9184c2aea8a49a (diff)
patch 8.2.2265: error message for missing endfunc/enddef is last linev8.2.2265
Problem: Error message for missing endfunc/enddef is last line. Solution: Report the line where the function starts. (closes #7582)
-rw-r--r--src/testdir/test_vim9_func.vim18
-rw-r--r--src/userfunc.c2
-rw-r--r--src/version.c2
3 files changed, 22 insertions, 0 deletions
diff --git a/src/testdir/test_vim9_func.vim b/src/testdir/test_vim9_func.vim
index 223b2fbda7..20ad3ba8e4 100644
--- a/src/testdir/test_vim9_func.vim
+++ b/src/testdir/test_vim9_func.vim
@@ -98,6 +98,24 @@ def Test_endfunc_enddef()
CheckScriptFailure(lines, 'E1152:', 4)
enddef
+def Test_missing_endfunc_enddef()
+ var lines =<< trim END
+ vim9script
+ def Test()
+ echo 'test'
+ endef
+ END
+ CheckScriptFailure(lines, 'E1057:', 2)
+
+ lines =<< trim END
+ vim9script
+ func Some()
+ echo 'test'
+ enfffunc
+ END
+ CheckScriptFailure(lines, 'E126:', 2)
+enddef
+
def ReturnString(): string
return 'string'
enddef
diff --git a/src/userfunc.c b/src/userfunc.c
index f0877e1c3b..5fab412b40 100644
--- a/src/userfunc.c
+++ b/src/userfunc.c
@@ -3352,6 +3352,8 @@ define_function(exarg_T *eap, char_u *name_arg)
lines_left = Rows - 1;
if (theline == NULL)
{
+ // Use the start of the function for the line number.
+ SOURCING_LNUM = sourcing_lnum_top;
if (skip_until != NULL)
semsg(_(e_missing_heredoc_end_marker_str), skip_until);
else if (eap->cmdidx == CMD_def)
diff --git a/src/version.c b/src/version.c
index 3fc3c01e1d..770c1c75a1 100644
--- a/src/version.c
+++ b/src/version.c
@@ -751,6 +751,8 @@ static char *(features[]) =
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
+ 2265,
+/**/
2264,
/**/
2263,