From: Patrick Steinhardt Date: Fri, 10 Oct 2025 05:36:45 GMT Subject: Re: [PATCH] refs: forbid clang to complain about unreachable code Message-ID: In-Reply-To: On Thu, Oct 09, 2025 at 01:30:21PM -0700, Junio C Hamano wrote: > "Johannes Schindelin via GitGitGadget" > writes: > > > From: Johannes Schindelin > > > > When `NO_SYMLINK_HEAD` is defined, `create_ref_symlink()` is hard-coded > > as `(-1)`, and as a consequence the condition `!create_ref_symlink()` > > always evaluates to false, rendering any code guarded by that condition > > unreachable. > > > > Therefore, clang is _technically_ correct when it complains about > > unreachable code. It does completely miss the fact that this is okay > > because on _other_ platforms, where `NO_SYMLINK_HEAD` is not defined, > > the code isn't unreachable at all. > > > > Let's use the same trick as in 82e79c63642c (git-compat-util: add > > NOT_CONSTANT macro and use it in atfork_prepare(), 2025-03-17) to > > appease clang while at the same time keeping the `-Wunreachable` flag > > to potentially find _actually_ unreachable code. > > > > Signed-off-by: Johannes Schindelin > > --- > > refs: forbid clang to complain about unreachable code > > > > Just upstreamin' > > It may not be a bad idea to deprecate core.preferSymlinkRefs now and > remove it at Git 3.0 boundary. Some platforms may not be able to do > symbolic links and use it to represent HEAD, but everybody should be > able to create a small text file with a single line. > > But until then, this is a very reasonable thing to do. Agreed. I don't see any reason why anyone would like to use symbolic refs for this. The reading side for such symrefs may continue to exist for a while. But the writing side can go away. Patrick