Mercurial > vim
diff src/vim9instr.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 | 9efd99a717c1 |
children | 877dddec681f |
line wrap: on
line diff
--- a/src/vim9instr.c +++ b/src/vim9instr.c @@ -1837,17 +1837,12 @@ generate_CALL( if (class_constructor && expected->tt_type == VAR_ANY) { class_T *clp = mtype->tt_class; - char_u *aname = ((char_u **)ufunc->uf_args.ga_data)[i]; - for (int om = 0; om < clp->class_obj_member_count; ++om) - { - if (STRCMP(aname, clp->class_obj_members[om].ocm_name) - == 0) - { - expected = clp->class_obj_members[om].ocm_type; - break; - } - } - + char_u *aname = ((char_u **)ufunc->uf_args.ga_data)[i]; + int m_idx; + ocmember_T *m = object_member_lookup(clp, aname, 0, + &m_idx); + if (m != NULL) + expected = m->ocm_type; } } else if (ufunc->uf_va_type == NULL