From 4bba16d252da6f072d311f9b3ebb50101d6d2eaf Mon Sep 17 00:00:00 2001
From: Bram Moolenaar <Bram@vim.org>
Date: Sun, 15 Aug 2021 19:28:05 +0200
Subject: [PATCH] patch 8.2.3352: Vim9: error for nested :enddef has wrong line
 number

Problem:    Vim9: error for nested :enddef has wrong line number.
Solution:   Compute the line number.
---
 src/testdir/test_vim9_func.vim | 11 +++++++++++
 src/userfunc.c                 |  2 ++
 src/version.c                  |  2 ++
 3 files changed, 15 insertions(+)

diff --git a/src/testdir/test_vim9_func.vim b/src/testdir/test_vim9_func.vim
index c42188e7a8..0ffe68632f 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 7a7617f5eb..86a2bec4eb 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 22022c815c..95e53312dc 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 */
+/**/
+    3352,
 /**/
     3351,
 /**/
-- 
GitLab