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