From: Jonathan Nieder Date: Thu, 26 Jul 2018 00:44:00 GMT Subject: Re: [PATCH v2] packfile: ensure that enum object_type is defined Message-ID: <20180726004400.GA217613@aiede.svl.corp.google.com> In-Reply-To: <20180725215607.19910-2-dev+git@drbeat.li> Beat Bolli wrote: > When compiling under Apple LLVM version 9.1.0 (clang-902.0.39.2) with > "make DEVELOPER=1 DEVOPTS=pedantic", the compiler says > > error: redeclaration of already-defined enum 'object_type' is a GNU > extension [-Werror,-Wgnu-redeclared-enum] > > According to https://en.cppreference.com/w/c/language/declarations > (section "Redeclaration"), a repeated declaration after the definition > is only legal for structs and unions, but not for enums. > > Drop the belated declaration of enum object_type and include cache.h > instead to make sure the enum is defined. > > Helped-by: Jonathan Nieder > Signed-off-by: Beat Bolli > --- > packfile.h | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) Thanks! I had run into this using clang on Linux, too, but hadn't spent the time to track it down and write a patch. Running git grep -e 'enum [^ ]*;' doesn't find any other instances of this error. Thanks for fixing it. Reviewed-by: Jonathan Nieder By the way, not about this patch: [...] > +++ b/packfile.h > @@ -1,12 +1,12 @@ > #ifndef PACKFILE_H > #define PACKFILE_H > > +#include "cache.h" > #include "oidset.h" > > /* in object-store.h */ > struct packed_git; > struct object_info; > -enum object_type; This '/* in object-store.h */' comment can easily go stale since nothing enforces that it stays accurate. I don't think it's a useful comment to have anyway, since it's straightforward to grep for where the struct is defined. I think we should remove the comment. Thanks, Jonathan