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>
diff --git a/src/vim9execute.c b/src/vim9execute.c
index 4a1dd1c..f8e2676 100644
--- a/src/vim9execute.c
+++ b/src/vim9execute.c
@@ -2166,26 +2166,20 @@
 	    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);