From: Bram Moolenaar Date: Thu, 10 Sep 2020 20:05:08 +0000 (+0200) Subject: patch 8.2.1656: Vim9: callstack wrong if :def function calls :def function X-Git-Tag: v8.2.1656 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=dfa3d5524e816c1ff7f603f9f3b7703a53a0f822;p=vim patch 8.2.1656: Vim9: callstack wrong if :def function calls :def function Problem: Vim9: callstack wrong if :def function calls :def function. Solution: Set the line number before calling. (closes #6914) --- diff --git a/src/testdir/test_vim9_func.vim b/src/testdir/test_vim9_func.vim index ae8f329f9..4e79c89de 100644 --- a/src/testdir/test_vim9_func.vim +++ b/src/testdir/test_vim9_func.vim @@ -1776,5 +1776,25 @@ def Test_restore_modifiers() assert_equal('', g:ei_after) enddef +def StackTop() + eval 1 + eval 2 + # call not on fourth line + StackBot() +enddef + +def StackBot() + # throw an error + eval [][0] +enddef + +def Test_callstack_def() + try + StackTop() + catch + assert_match('Test_callstack_def\[2\]..StackTop\[4\]..StackBot, line 2', v:throwpoint) + endtry +enddef + " vim: ts=8 sw=2 sts=2 expandtab tw=80 fdm=marker diff --git a/src/version.c b/src/version.c index 2628ed610..7aa35c2e5 100644 --- a/src/version.c +++ b/src/version.c @@ -750,6 +750,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ +/**/ + 1656, /**/ 1655, /**/ diff --git a/src/vim9execute.c b/src/vim9execute.c index 76cafb4c9..18cfb0213 100644 --- a/src/vim9execute.c +++ b/src/vim9execute.c @@ -1665,6 +1665,7 @@ call_def_function( // call a :def function case ISN_DCALL: + SOURCING_LNUM = iptr->isn_lnum; if (call_dfunc(iptr->isn_arg.dfunc.cdf_idx, iptr->isn_arg.dfunc.cdf_argcount, &ectx) == FAIL)