diff --git a/src/vim9expr.c b/src/vim9expr.c
index c5897fa..5a6b110 100644
--- a/src/vim9expr.c
+++ b/src/vim9expr.c
@@ -273,8 +273,47 @@
     class_T *cl = (class_T *)type->tt_member;
     if (*name_end == '(')
     {
-	// TODO: method or function call
-	emsg("compile_class_object_index(): object/class call not handled yet");
+	if (type->tt_type == VAR_CLASS)
+	{
+	    garray_T	*instr = &cctx->ctx_instr;
+	    if (instr->ga_len > 0)
+	    {
+		isn_T *isn = ((isn_T *)instr->ga_data) + instr->ga_len - 1;
+		if (isn->isn_type == ISN_LOADSCRIPT)
+		{
+		    // The class was recognized as a script item.  We only need
+		    // to know what class it is, drop the instruction.
+		    --instr->ga_len;
+		    vim_free(isn->isn_arg.script.scriptref);
+		}
+	    }
+
+	    for (int i = 0; i < cl->class_class_function_count; ++i)
+	    {
+		ufunc_T *fp = cl->class_class_functions[i];
+		// Use a separate pointer to avoid that ASAN complains about
+		// uf_name[] only being 4 characters.
+		char_u *ufname = (char_u *)fp->uf_name;
+		if (STRNCMP(name, ufname, len) == 0 && ufname[len] == NUL)
+		{
+		    *arg = skipwhite(name_end + 1);
+		    int		argcount = 0;
+		    if (compile_arguments(arg, cctx, &argcount,
+						       CA_NOT_SPECIAL) == FAIL)
+			return FAIL;
+		    return generate_CALL(cctx, fp, argcount);
+		}
+	    }
+
+	    semsg(_(e_method_not_found_on_class_str_str),
+							 cl->class_name, name);
+	    return FAIL;
+	}
+	else
+	{
+	    // TODO: method call
+	    emsg("compile_class_object_index(): object call not handled yet");
+	}
     }
     else if (type->tt_type == VAR_OBJECT)
     {
