Patch 8.2.0340

9 views
Skip to first unread message

Bram Moolenaar

unread,
Mar 1, 2020, 9:37:19 AM3/1/20
to vim...@googlegroups.com

Patch 8.2.0340
Problem: Vim9: function and partial types not tested.
Solution: Support more for partial, add tests.
Files: src/vim9.h, src/vim9compile.c, src/vim9execute.c,
src/testdir/test_vim9_script.vim


*** ../vim-8.2.0339/src/vim9.h 2020-02-29 23:23:44.484659204 +0100
--- src/vim9.h 2020-03-01 14:59:49.381576778 +0100
***************
*** 215,220 ****
--- 215,221 ----
#endif
channel_T *channel;
job_T *job;
+ partial_T *partial;
jump_T jump;
forloop_T forloop;
try_T try;
*** ../vim-8.2.0339/src/vim9compile.c 2020-03-01 14:04:42.224689018 +0100
--- src/vim9compile.c 2020-03-01 15:01:59.453119645 +0100
***************
*** 706,711 ****
--- 706,728 ----
}

/*
+ * Generate an ISN_PUSHPARTIAL instruction with partial "part".
+ * Consumes "name".
+ */
+ static int
+ generate_PUSHPARTIAL(cctx_T *cctx, partial_T *part)
+ {
+ isn_T *isn;
+
+ if ((isn = generate_instr_type(cctx, ISN_PUSHPARTIAL,
+ &t_partial_any)) == NULL)
+ return FAIL;
+ isn->isn_arg.partial = part;
+
+ return OK;
+ }
+
+ /*
* Generate an ISN_STORE instruction.
*/
static int
***************
*** 3605,3612 ****
generate_PUSHFUNC(cctx, NULL);
break;
case VAR_PARTIAL:
! // generate_PUSHPARTIAL(cctx, NULL);
! emsg("Partial type not supported yet");
break;
case VAR_LIST:
generate_NEWLIST(cctx, 0);
--- 3622,3628 ----
generate_PUSHFUNC(cctx, NULL);
break;
case VAR_PARTIAL:
! generate_PUSHPARTIAL(cctx, NULL);
break;
case VAR_LIST:
generate_NEWLIST(cctx, 0);
***************
*** 5228,5234 ****
break;

case ISN_PUSHPARTIAL:
! // TODO
break;

case ISN_PUSHJOB:
--- 5244,5250 ----
break;

case ISN_PUSHPARTIAL:
! partial_unref(isn->isn_arg.partial);
break;

case ISN_PUSHJOB:
*** ../vim-8.2.0339/src/vim9execute.c 2020-02-29 23:23:44.484659204 +0100
--- src/vim9execute.c 2020-03-01 15:31:12.490999220 +0100
***************
*** 873,882 ****
break;
case ISN_PUSHFUNC:
tv->v_type = VAR_FUNC;
! tv->vval.v_string = vim_strsave(iptr->isn_arg.string);
break;
case ISN_PUSHPARTIAL:
! tv->v_type = VAR_UNKNOWN;
break;
case ISN_PUSHCHANNEL:
#ifdef FEAT_JOB_CHANNEL
--- 873,889 ----
break;
case ISN_PUSHFUNC:
tv->v_type = VAR_FUNC;
! 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_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,1884 ****
}
break;
case ISN_PUSHFUNC:
! smsg("%4d PUSHFUNC \"%s\"", current, iptr->isn_arg.string);
break;
case ISN_PUSHPARTIAL:
! // TODO
! smsg("%4d PUSHPARTIAL", current);
break;
case ISN_PUSHCHANNEL:
#ifdef FEAT_JOB_CHANNEL
--- 1881,1900 ----
}
break;
case ISN_PUSHFUNC:
! {
! char *name = (char *)iptr->isn_arg.string;
!
! smsg("%4d PUSHFUNC \"%s\"", current,
! name == NULL ? "[none]" : name);
! }
break;
case ISN_PUSHPARTIAL:
! {
! 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
*** ../vim-8.2.0339/src/testdir/test_vim9_script.vim 2020-03-01 14:04:42.224689018 +0100
--- src/testdir/test_vim9_script.vim 2020-03-01 14:53:31.735115244 +0100
***************
*** 60,66 ****
if has('float')
let float1: float = 3.4
endif
! let party: partial = funcref('Test_syntax')

g:newvar = 'new'
assert_equal('new', g:newvar)
--- 60,69 ----
if has('float')
let float1: float = 3.4
endif
! let funky1: func
! let funky2: func = function('len')
! let party1: partial
! let party2: partial = funcref('Test_syntax')

g:newvar = 'new'
assert_equal('new', g:newvar)
*** ../vim-8.2.0339/src/version.c 2020-03-01 14:04:42.224689018 +0100
--- src/version.c 2020-03-01 15:00:57.001335676 +0100
***************
*** 740,741 ****
--- 740,743 ----
{ /* Add new patch number below this line */
+ /**/
+ 340,
/**/

--
Drink wet cement and get really stoned.

/// Bram Moolenaar -- Br...@Moolenaar.net -- http://www.Moolenaar.net \\\
/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
\\\ an exciting new programming language -- http://www.Zimbu.org ///
\\\ help me help AIDS victims -- http://ICCF-Holland.org ///
Reply all
Reply to author
Forward
0 new messages