odb: convert `odb_has_object()` flags into an enum

Following the reason in the preceding commit, convert the `odb_has_object()` flags into an enum. With this change, we would have catched the misuse of `odb_has_object()` that was fixed in a preceding commit as the compiler would have generated a warning: ../builtin/backfill.c:71:9: error: implicit conversion from enumeration type 'enum odb_object_info_flag' to different enumeration type 'enum odb_has_object_flag' [-Werror,-Wenum-conversion] 70 | if (!odb_has_object(ctx->repo->objects, &list->oid[i], | ~~~~~~~~~~~~~~ 71 | OBJECT_INFO_FOR_PREFETCH)) | ^~~~~~~~~~~~~~~~~~~~~~~~ 1 error generated. Signed-off-by: Patrick Steinhardt <ps@pks.im> Signed-off-by: Junio C Hamano <gitster@pobox.com>

Patrick Steinhardt committed Feb 12, 2026 at 07:59 UTC 732ec9b17b78a49496bfb796fcfe606f3a9f02f1
2 files changed +3 -3
odb.c
+1 -1
@@ -964,7 +964,7 @@ void *odb_read_object_peeled(struct object_database *odb,
964 }
965
966 int odb_has_object(struct object_database *odb, const struct object_id *oid,
967 - unsigned flags)
967 + enum has_object_flags flags)
968 {
969 unsigned object_info_flags = 0;
970
odb.h
+2 -2
@@ -395,7 +395,7 @@ int odb_read_object_info(struct object_database *odb,
395 const struct object_id *oid,
396 unsigned long *sizep);
397
398 -enum {
398 +enum has_object_flags {
399 /* Retry packed storage after checking packed and loose storage */
400 HAS_OBJECT_RECHECK_PACKED = (1 << 0),
401 /* Allow fetching the object in case the repository has a promisor remote. */
@@ -408,7 +408,7 @@ enum {
408 */
409 int odb_has_object(struct object_database *odb,
410 const struct object_id *oid,
411 - unsigned flags);
411 + enum has_object_flags flags);
412
413 int odb_freshen_object(struct object_database *odb,
414 const struct object_id *oid);