diff src/vim9execute.c @ 24504:e7577f79d6eb v8.2.2792

patch 8.2.2792: Vim9: :disas shows instructions for default args but no text Commit: https://github.com/vim/vim/commit/9ce47ec0b65f81358febacbd9b808ac8ef7af85c Author: Bram Moolenaar <Bram@vim.org> Date: Tue Apr 20 22:16:39 2021 +0200 patch 8.2.2792: Vim9: :disas shows instructions for default args but no text Problem: Vim9: :disas shows instructions for default args but no text. Solution: Show the expression test above the default argument instructions. (closes #8129)
author Bram Moolenaar <Bram@vim.org>
date Tue, 20 Apr 2021 22:30:04 +0200
parents 08050e45bd06
children df90c61c306c
line wrap: on
line diff
--- a/src/vim9execute.c
+++ b/src/vim9execute.c
@@ -4338,6 +4338,7 @@ list_instructions(char *pfx, isn_T *inst
     int		line_idx = 0;
     int		prev_current = 0;
     int		current;
+    int		def_arg_idx = 0;
 
     for (current = 0; current < instr_count; ++current)
     {
@@ -4345,6 +4346,7 @@ list_instructions(char *pfx, isn_T *inst
 	char	    *line;
 
 	if (ufunc != NULL)
+	{
 	    while (line_idx < iptr->isn_lnum
 					  && line_idx < ufunc->uf_lines.ga_len)
 	    {
@@ -4357,6 +4359,23 @@ list_instructions(char *pfx, isn_T *inst
 		if (line != NULL)
 		    msg(line);
 	    }
+	    if (iptr->isn_type == ISN_JUMP_IF_ARG_SET)
+	    {
+		int	first_def_arg = ufunc->uf_args.ga_len
+						   - ufunc->uf_def_args.ga_len;
+
+		if (def_arg_idx > 0)
+		    msg_puts("\n\n");
+		msg_start();
+		msg_puts("  ");
+		msg_puts(((char **)(ufunc->uf_args.ga_data))[
+						 first_def_arg + def_arg_idx]);
+		msg_puts(" = ");
+		msg_puts(((char **)(ufunc->uf_def_args.ga_data))[def_arg_idx++]);
+		msg_clr_eos();
+		msg_end();
+	    }
+	}
 
 	switch (iptr->isn_type)
 	{