summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBram Moolenaar <Bram@vim.org>2021-08-15 19:28:05 +0200
committerBram Moolenaar <Bram@vim.org>2021-08-15 19:28:05 +0200
commit4bba16d252da6f072d311f9b3ebb50101d6d2eaf (patch)
treef374be3d8bbc73d2117afa5520da072aaee2d60f
parentb033ee2ddfa8513b57111a56d6af9e45c41f7d1e (diff)
downloadvim-git-4bba16d252da6f072d311f9b3ebb50101d6d2eaf.tar.gz
patch 8.2.3352: Vim9: error for nested :enddef has wrong line numberv8.2.3352
Problem: Vim9: error for nested :enddef has wrong line number. Solution: Compute the line number.
-rw-r--r--src/testdir/test_vim9_func.vim11
-rw-r--r--src/userfunc.c2
-rw-r--r--src/version.c2
3 files changed, 15 insertions, 0 deletions
diff --git a/src/testdir/test_vim9_func.vim b/src/testdir/test_vim9_func.vim
index c42188e7a..0ffe68632 100644
--- a/src/testdir/test_vim9_func.vim
+++ b/src/testdir/test_vim9_func.vim
@@ -630,6 +630,17 @@ def Test_nested_function()
assert_equal(2, Test())
END
CheckScriptSuccess(lines)
+
+ lines =<< trim END
+ vim9script
+ def Outer()
+ def Inner()
+ echo 'hello'
+ enddef burp
+ enddef
+ defcompile
+ END
+ CheckScriptFailure(lines, 'E1173: Text found after enddef: burp', 3)
enddef
def Test_not_nested_function()
diff --git a/src/userfunc.c b/src/userfunc.c
index 7a7617f5e..86a2bec4e 100644
--- a/src/userfunc.c
+++ b/src/userfunc.c
@@ -822,6 +822,8 @@ get_function_body(
else if (*p != NUL && *p != (vim9_function ? '#' : '"')
&& (vim9_function || p_verbose > 0))
{
+ SOURCING_LNUM = sourcing_lnum_top
+ + newlines->ga_len + 1;
if (eap->cmdidx == CMD_def)
semsg(_(e_text_found_after_enddef_str), p);
else
diff --git a/src/version.c b/src/version.c
index 22022c815..95e53312d 100644
--- a/src/version.c
+++ b/src/version.c
@@ -756,6 +756,8 @@ static char *(features[]) =
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
+ 3352,
+/**/
3351,
/**/
3350,