# HG changeset patch # User Bram Moolenaar # Date 1644676203 -3600 # Node ID a6ffe874a24b9a171d2526025d34e14bfa4a115c # Parent 7ea1e3b0b5cae4251198c2f6a32adadddce4464a patch 8.2.4358: Vim9: line number of exception is not set Commit: https://github.com/vim/vim/commit/90a57168a42048eb7e176a4f9acf607c31e8074f Author: Bram Moolenaar Date: Sat Feb 12 14:23:17 2022 +0000 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 https://github.com/vim/vim/issues/9755) diff --git a/src/testdir/test_vim9_script.vim b/src/testdir/test_vim9_script.vim --- a/src/testdir/test_vim9_script.vim +++ b/src/testdir/test_vim9_script.vim @@ -1057,6 +1057,18 @@ def Test_try_catch_skipped() 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 --- 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 */ /**/ + 4358, +/**/ 4357, /**/ 4356, diff --git a/src/vim9execute.c b/src/vim9execute.c --- a/src/vim9execute.c +++ b/src/vim9execute.c @@ -3826,6 +3826,7 @@ exec_instructions(ectx_T *ectx) } } + SOURCING_LNUM = iptr->isn_lnum; if (throw_exception(tv->vval.v_string, ET_USER, NULL) == FAIL) {