# HG changeset patch # User Bram Moolenaar # Date 1637706603 -3600 # Node ID 3d92646fe6c8582d43b6de8d29d784141625e0d7 # Parent 2f8126f528a161079b0483cb1ab1de387f188cb5 patch 8.2.3657: Vim9: debug text misses one line of return statement Commit: https://github.com/vim/vim/commit/112bed0cbeac84f73dca2682c5c2d74fabe1114d Author: Bram Moolenaar Date: Tue Nov 23 22:16:34 2021 +0000 patch 8.2.3657: Vim9: debug text misses one line of return statement Problem: Vim9: debug text misses one line of return statement. Solution: Add a line when not at a debug instruction. (closes https://github.com/vim/vim/issues/9137) diff --git a/src/testdir/test_debugger.vim b/src/testdir/test_debugger.vim --- a/src/testdir/test_debugger.vim +++ b/src/testdir/test_debugger.vim @@ -373,6 +373,29 @@ def Test_Debugger_breakadd_expr() call delete('Xtest.vim') enddef +def Test_Debugger_break_at_return() + var lines =<< trim END + vim9script + def g:GetNum(): number + return 1 + + 2 + + 3 + enddef + breakadd func GetNum + END + writefile(lines, 'Xtest.vim') + + # Start Vim in a terminal + var buf = RunVimInTerminal('-S Xtest.vim', {wait_for_ruler: 0}) + call TermWait(buf) + + RunDbgCmd(buf, ':call GetNum()', + ['line 1: return 1 + 2 + 3'], {match: 'pattern'}) + + call StopVimInTerminal(buf) + call delete('Xtest.vim') +enddef + func Test_Backtrace_Through_Source() CheckCWD let file1 =<< trim END diff --git a/src/version.c b/src/version.c --- a/src/version.c +++ b/src/version.c @@ -758,6 +758,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ /**/ + 3657, +/**/ 3656, /**/ 3655, diff --git a/src/vim9execute.c b/src/vim9execute.c --- a/src/vim9execute.c +++ b/src/vim9execute.c @@ -1602,7 +1602,7 @@ handle_debug(isn_T *iptr, ectx_T *ectx) || ni->isn_type == ISN_RETURN || ni->isn_type == ISN_RETURN_VOID) { - end_lnum = ni->isn_lnum; + end_lnum = ni->isn_lnum + (ni->isn_type == ISN_DEBUG ? 0 : 1); break; }