Mercurial > vim
diff src/vim9execute.c @ 19566:ec1eeb1b69e2 v8.2.0340
patch 8.2.0340: Vim9: function and partial types not tested
Commit: https://github.com/vim/vim/commit/087d2e15184bea3bf455dd266bd6ed66a45396e5
Author: Bram Moolenaar <Bram@vim.org>
Date: Sun Mar 1 15:36:42 2020 +0100
patch 8.2.0340: Vim9: function and partial types not tested
Problem: Vim9: function and partial types not tested.
Solution: Support more for partial, add tests.
author | Bram Moolenaar <Bram@vim.org> |
---|---|
date | Sun, 01 Mar 2020 15:45:03 +0100 |
parents | 8eeec8886c02 |
children | 6b6e97d0185e |
line wrap: on
line diff
--- a/src/vim9execute.c +++ b/src/vim9execute.c @@ -873,10 +873,17 @@ call_def_function( break; case ISN_PUSHFUNC: tv->v_type = VAR_FUNC; - tv->vval.v_string = vim_strsave(iptr->isn_arg.string); + if (iptr->isn_arg.string == NULL) + tv->vval.v_string = NULL; + else + tv->vval.v_string = + vim_strsave(iptr->isn_arg.string); break; case ISN_PUSHPARTIAL: - tv->v_type = VAR_UNKNOWN; + tv->v_type = VAR_PARTIAL; + tv->vval.v_partial = iptr->isn_arg.partial; + if (tv->vval.v_partial != NULL) + ++tv->vval.v_partial->pt_refcount; break; case ISN_PUSHCHANNEL: #ifdef FEAT_JOB_CHANNEL @@ -1874,11 +1881,20 @@ ex_disassemble(exarg_T *eap) } break; case ISN_PUSHFUNC: - smsg("%4d PUSHFUNC \"%s\"", current, iptr->isn_arg.string); + { + char *name = (char *)iptr->isn_arg.string; + + smsg("%4d PUSHFUNC \"%s\"", current, + name == NULL ? "[none]" : name); + } break; case ISN_PUSHPARTIAL: - // TODO - smsg("%4d PUSHPARTIAL", current); + { + partial_T *part = iptr->isn_arg.partial; + + smsg("%4d PUSHPARTIAL \"%s\"", current, + part == NULL ? "[none]" : (char *)partial_name(part)); + } break; case ISN_PUSHCHANNEL: #ifdef FEAT_JOB_CHANNEL