patch 8.2.4358: Vim9: line number of exception is not set
Problem: Vim9: line number of exception is not set.
Solution: Set the line number before throwing an exception. (closes #9755)
diff --git a/src/testdir/test_vim9_script.vim b/src/testdir/test_vim9_script.vim
index 37459a7..1b77f39 100644
--- a/src/testdir/test_vim9_script.vim
+++ b/src/testdir/test_vim9_script.vim
@@ -1057,6 +1057,18 @@
assert_match("NEWLIST size 0\n", instr)
enddef
+def Test_throw_line_number()
+ def Func()
+ eval 1 + 1
+ eval 2 + 2
+ throw 'exception'
+ enddef
+ try
+ Func()
+ catch /exception/
+ assert_match('line 3', v:throwpoint)
+ endtry
+enddef
def Test_throw_vimscript()
diff --git a/src/version.c b/src/version.c
index 7e5d18f..636757c 100644
--- a/src/version.c
+++ b/src/version.c
@@ -751,6 +751,8 @@
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
+ 4358,
+/**/
4357,
/**/
4356,
diff --git a/src/vim9execute.c b/src/vim9execute.c
index 1412d08..f6456d6 100644
--- a/src/vim9execute.c
+++ b/src/vim9execute.c
@@ -3826,6 +3826,7 @@
}
}
+ SOURCING_LNUM = iptr->isn_lnum;
if (throw_exception(tv->vval.v_string, ET_USER, NULL)
== FAIL)
{