Mercurial > vim
diff src/vim9execute.c @ 33233:108d890d887f v9.0.1890
patch 9.0.1890: Vim9: lookup code for class/object repaeated
Commit: https://github.com/vim/vim/commit/f36bbcd402c6ee5a27bcab3b20b6362ab93b8898
Author: Yegappan Lakshmanan <yegappan@yahoo.com>
Date: Sun Sep 10 18:19:06 2023 +0200
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>
author | Christian Brabandt <cb@256bit.org> |
---|---|
date | Sun, 10 Sep 2023 18:30:04 +0200 |
parents | ea3f1e0ee5f3 |
children | aba1fa2b7d1e |
line wrap: on
line diff
--- a/src/vim9execute.c +++ b/src/vim9execute.c @@ -2166,26 +2166,20 @@ execute_storeindex(isn_T *iptr, ectx_T * 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; + + lidx = m_idx; } - - if (m == NULL) + else { semsg(_(e_member_not_found_on_object_str_str), cl->class_name, member);