0
0
mirror of https://github.com/vim/vim.git synced 2025-09-24 03:44:06 -04:00

patch 8.2.2756: Vim9: blob index and slice not implemented yet

Problem:    Vim9: blob index and slice not implemented yet.
Solution:   Implement blob index and slice.
This commit is contained in:
Bram Moolenaar
2021-04-11 20:26:34 +02:00
parent af8ea0d066
commit cfc3023cb6
8 changed files with 142 additions and 72 deletions

View File

@@ -2725,8 +2725,18 @@ compile_member(int is_slice, cctx_T *cctx)
}
else if (vtype == VAR_BLOB)
{
emsg("Sorry, blob index and slice not implemented yet");
return FAIL;
if (is_slice)
{
*typep = &t_blob;
if (generate_instr_drop(cctx, ISN_BLOBSLICE, 2) == FAIL)
return FAIL;
}
else
{
*typep = &t_number;
if (generate_instr_drop(cctx, ISN_BLOBINDEX, 1) == FAIL)
return FAIL;
}
}
else if (vtype == VAR_LIST || *typep == &t_any)
{
@@ -4088,7 +4098,7 @@ compile_subscript(
// list index: list[123]
// dict member: dict[key]
// string index: text[123]
// TODO: blob index
// blob index: blob[123]
// TODO: more arguments
// TODO: recognize list or dict at runtime
if (generate_ppconst(cctx, ppconst) == FAIL)
@@ -9241,6 +9251,8 @@ delete_instr(isn_T *isn)
case ISN_ANYSLICE:
case ISN_BCALL:
case ISN_BLOBAPPEND:
case ISN_BLOBINDEX:
case ISN_BLOBSLICE:
case ISN_CATCH:
case ISN_CHECKLEN:
case ISN_CHECKNR: