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 <jrnieder@xxxxxxxxx> > Signed-off-by: Beat Bolli <dev+git@xxxxxxxxx> > --- > 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 <jrnieder@xxxxxxxxx> 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