changeset 34755:1a411f737239 v9.1.0255

patch 9.1.0255: Vim9: no indication of script nr in stack trace of classes Commit: https://github.com/vim/vim/commit/16cdfa69e07190674a8e85a48144a467472ca2f4 Author: Ernie Rael <errael@raelity.com> Date: Tue Apr 2 19:05:39 2024 +0200 patch 9.1.0255: Vim9: no indication of script nr in stack trace of classes Problem: Vim9: no indication of script nr in stack trace of classes Solution: Prefix the class name with the script name in the stack trace. (Ernie Rael) fixes: #14376 closes: #14390 Signed-off-by: Ernie Rael <errael@raelity.com> Signed-off-by: Christian Brabandt <cb@256bit.org>
author Christian Brabandt <cb@256bit.org>
date Tue, 02 Apr 2024 19:15:04 +0200
parents 66e88c438206
children 317067ddcba2
files src/scriptfile.c src/testdir/test_vim9_class.vim src/version.c
diffstat 3 files changed, 6 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- a/src/scriptfile.c
+++ b/src/scriptfile.c
@@ -215,6 +215,9 @@ estack_sfile(estack_arg_T which UNUSED)
 	    if (*class_name != NUL)
 	    {
 		// For class methods prepend "<class name>." to the function name.
+		ga_concat(&ga, (char_u *)"<SNR>");
+		ga.ga_len += vim_snprintf((char *)ga.ga_data + ga.ga_len, 23,
+		       "%d_", entry->es_info.ufunc->uf_script_ctx.sc_sid);
 		ga_concat(&ga, class_name);
 		ga_append(&ga, '.');
 	    }
--- a/src/testdir/test_vim9_class.vim
+++ b/src/testdir/test_vim9_class.vim
@@ -3741,7 +3741,7 @@ def Test_stack_expansion_with_methods()
     endclass
 
     def F0()
-      assert_match('<SNR>\d\+_F\[1\]\.\.C\.M1\[1\]\.\.<SNR>\d\+_F0\[1\]$', expand('<stack>'))
+      assert_match('<SNR>\d\+_F\[1\]\.\.<SNR>\d\+_C\.M1\[1\]\.\.<SNR>\d\+_F0\[1\]$', expand('<stack>'))
     enddef
 
     def F()
--- a/src/version.c
+++ b/src/version.c
@@ -705,6 +705,8 @@ static char *(features[]) =
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    255,
+/**/
     254,
 /**/
     253,