To: vim_dev@googlegroups.com Subject: Patch 8.2.2792 Fcc: outbox From: Bram Moolenaar Mime-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ------------ Patch 8.2.2792 Problem: Vim9: :disas shows instructions for default args but no text. Solution: Show the expression test above the default argument instructions. (closes #8129) Files: src/vim9execute.c, src/testdir/test_vim9_disassemble.vim *** ../vim-8.2.2791/src/vim9execute.c 2021-04-19 20:49:58.156857538 +0200 --- src/vim9execute.c 2021-04-20 22:09:58.056178728 +0200 *************** *** 4338,4343 **** --- 4338,4344 ---- int line_idx = 0; int prev_current = 0; int current; + int def_arg_idx = 0; for (current = 0; current < instr_count; ++current) { *************** *** 4345,4350 **** --- 4346,4352 ---- char *line; if (ufunc != NULL) + { while (line_idx < iptr->isn_lnum && line_idx < ufunc->uf_lines.ga_len) { *************** *** 4357,4362 **** --- 4359,4381 ---- 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) { *** ../vim-8.2.2791/src/testdir/test_vim9_disassemble.vim 2021-04-19 20:49:58.156857538 +0200 --- src/testdir/test_vim9_disassemble.vim 2021-04-20 22:13:56.007463131 +0200 *************** *** 724,743 **** enddef ! def FuncWithDefault(arg: string = 'default', nr = 77): string return arg .. nr enddef def Test_disassemble_call_default() var res = execute('disass FuncWithDefault') assert_match('FuncWithDefault\_s*' .. '\d JUMP_IF_ARG_SET arg\[-2\] -> 3\_s*' .. '\d PUSHS "default"\_s*' .. '\d STORE arg\[-2]\_s*' .. '3 JUMP_IF_ARG_SET arg\[-1\] -> 6\_s*' .. '\d PUSHNR 77\_s*' .. '\d STORE arg\[-1]\_s*' .. ! 'return arg .. nr\_s*' .. '6 LOAD arg\[-2]\_s*' .. '\d LOAD arg\[-1]\_s*' .. '\d 2STRING stack\[-1]\_s*' .. --- 724,745 ---- enddef ! def FuncWithDefault(l: number, arg: string = "default", nr = 77): string return arg .. nr enddef def Test_disassemble_call_default() var res = execute('disass FuncWithDefault') assert_match('FuncWithDefault\_s*' .. + ' arg = "default"\_s*' .. '\d JUMP_IF_ARG_SET arg\[-2\] -> 3\_s*' .. '\d PUSHS "default"\_s*' .. '\d STORE arg\[-2]\_s*' .. + ' nr = 77\_s*' .. '3 JUMP_IF_ARG_SET arg\[-1\] -> 6\_s*' .. '\d PUSHNR 77\_s*' .. '\d STORE arg\[-1]\_s*' .. ! ' return arg .. nr\_s*' .. '6 LOAD arg\[-2]\_s*' .. '\d LOAD arg\[-1]\_s*' .. '\d 2STRING stack\[-1]\_s*' .. *** ../vim-8.2.2791/src/version.c 2021-04-20 21:49:32.231668519 +0200 --- src/version.c 2021-04-20 22:00:24.949873829 +0200 *************** *** 752,753 **** --- 752,755 ---- { /* Add new patch number below this line */ + /**/ + 2792, /**/ -- Don't drink and drive. You might hit a bump and spill your beer. /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ /// \\\ \\\ sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ /// \\\ help me help AIDS victims -- http://ICCF-Holland.org ///