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

patch 9.0.1890: Vim9: lookup code for class/object repaeated

Problem:  Vim9: lookup code for class/object repaeated
Solution: Refactor and make use of lookup functions

closes: #13067

Signed-off-by: Christian Brabandt <cb@256bit.org>
Co-authored-by: Yegappan Lakshmanan <yegappan@yahoo.com>
This commit is contained in:
Yegappan Lakshmanan
2023-09-10 18:19:06 +02:00
committed by Christian Brabandt
parent 0661033075
commit f36bbcd402
9 changed files with 437 additions and 317 deletions

View File

@@ -2166,26 +2166,20 @@ execute_storeindex(isn_T *iptr, ectx_T *ectx)
class_T *cl = obj->obj_class;
char_u *member = tv_idx->vval.v_string;
ocmember_T *m = NULL;
for (int i = 0; i < cl->class_obj_member_count; ++i)
int m_idx;
ocmember_T *m = object_member_lookup(cl, member, 0, &m_idx);
if (m != NULL)
{
m = &cl->class_obj_members[i];
if (STRCMP(member, m->ocm_name) == 0)
if (*member == '_')
{
if (*member == '_')
{
semsg(_(e_cannot_access_private_member_str),
m->ocm_name);
status = FAIL;
}
lidx = i;
break;
semsg(_(e_cannot_access_private_member_str),
m->ocm_name);
status = FAIL;
}
m = NULL;
}
if (m == NULL)
lidx = m_idx;
}
else
{
semsg(_(e_member_not_found_on_object_str_str),
cl->class_name, member);