Thread (29 messages) flat view 29 messages, 3 authors, 2021-09-21

Re: [PATCH v3 3/5] read-cache & fetch-negotiator: check "enum" values in switch()

From: Taylor Blau <hidden>
Date: 2021-09-21 02:20:19

On Sun, Sep 19, 2021 at 10:47:17AM +0200, Ævar Arnfjörð Bjarmason wrote:
Change tweak_untracked_cache() in "read-cache.c" to use a switch() to
have the compiler assert that we checked all possible values in the
"enum untracked_cache_setting" type, and likewise remove the "default"
case in fetch_negotiator_init() in favor of checking for
"FETCH_NEGOTIATION_UNSET" and "FETCH_NEGOTIATION_NONE".

As will be discussed in a subsequent we'll only ever have either of
s/subsequent/& patch/ ?
quoted hunk ↗ jump to hunk
these set to FETCH_NEGOTIATION_NONE, FETCH_NEGOTIATION_UNSET and
UNTRACKED_CACHE_UNSET within the prepare_repo_settings() function
itself. In preparation for fixing that code let's add a BUG() here to
mark this as unreachable code.

See ad0fb659993 (repo-settings: parse core.untrackedCache, 2019-08-13)
for when the "unset" and "keep" handling for core.untrackedCache was
consolidated, and aaf633c2ad1 (repo-settings: create
feature.experimental setting, 2019-08-13) for the addition of the
"default" pattern in "fetch-negotiator.c".

Signed-off-by: Ævar Arnfjörð Bjarmason <redacted>
---
 fetch-negotiator.c |  4 +++-
 read-cache.c       | 15 ++++++++++-----
 2 files changed, 13 insertions(+), 6 deletions(-)
diff --git a/fetch-negotiator.c b/fetch-negotiator.c
index 57ed5784e14..237f92b8696 100644
--- a/fetch-negotiator.c
+++ b/fetch-negotiator.c
@@ -19,8 +19,10 @@ void fetch_negotiator_init(struct repository *r,
 		return;

 	case FETCH_NEGOTIATION_DEFAULT:
-	default:
 		default_negotiator_init(negotiator);
 		return;
+	case FETCH_NEGOTIATION_NONE:
+	case FETCH_NEGOTIATION_UNSET:
+		BUG("FETCH_NEGOTIATION_UNSET only in prepare_repo_settings()");
I was briefly confused why this BUG message mentioned
FETCH_NEGOTIATION_UNSET, since we only support FETCH_NEGOTIATION_DEFAULT
here.

But then I realized that it said "only in prepare_repo_settings()", and
we're in fetch_negotiator_init(). So this makes sense to me.

Other than the small typo in the patch message, this looks good to me.

Thanks,
Taylor
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help