# [PATCH 0/2] Pedantic fixes for Apple clang

8 messages from 2018-07-24 to 2018-07-25. Participants: Beat Bolli, Jonathan Nieder, Christian Couder, Junio C Hamano.
Thread: https://gitlist.dev/t/48950

## Beat Bolli, 2018-07-24 21:52

Subject: [PATCH 0/2] Pedantic fixes for Apple clang
Message-ID: <20180724215223.27516-1-dev+git@drbeat.li>
URL: https://gitlist.dev/e/20180724215223.27516-1-dev%2Bgit%40drbeat.li

```
Following up on my previous series bb/pedantic for gcc, here are two
fixes for pedantic compilation under MacOS 10.13.6 (High Sierra) with
the command line tools of Xcode Version 9.4.1 (9F2000).

Beat Bolli (2):
  packfile: drop a repeated enum declaration
  remote-odb: un-inline function remote_odb_reinit

 packfile.h   | 1 -
 remote-odb.c | 2 +-
 2 files changed, 1 insertion(+), 2 deletions(-)

-- 
2.18.0


```

## Beat Bolli, 2018-07-24 21:52

Subject: [PATCH 2/2] remote-odb: un-inline function remote_odb_reinit
Message-ID: <20180724215223.27516-3-dev+git@drbeat.li>
URL: https://gitlist.dev/e/20180724215223.27516-3-dev%2Bgit%40drbeat.li
In-Reply-To: <20180724215223.27516-1-dev+git@drbeat.li>

```
When compiling under Apple LLVM version 9.1.0 (clang-902.0.39.2) with
"make DEVELOPER=1 DEVOPTS=pedantic", the compiler says

    remote-odb.c:87:2: error: static function 'remote_odb_do_init' is
    used in an inline function with external linkage
    [-Werror,-Wstatic-in-inline]

Remove the inline specifier that would only make sense if
remote_odb_reinit were defined in the header file. Moving it into the
header is not possible because the called function remote_odb_do_init is
static and thus not visible from the includers of the header.

Signed-off-by: Beat Bolli <dev+git@drbeat.li>
---
 remote-odb.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/remote-odb.c b/remote-odb.c
index 847a86505778..49cf8e30aa92 100644
--- a/remote-odb.c
+++ b/remote-odb.c
@@ -82,7 +82,7 @@ static inline void remote_odb_init(void)
 	remote_odb_do_init(0);
 }
 
-inline void remote_odb_reinit(void)
+void remote_odb_reinit(void)
 {
 	remote_odb_do_init(1);
 }
-- 
2.18.0


```

## Beat Bolli, 2018-07-24 21:52

Subject: [PATCH 1/2] packfile: drop a repeated enum declaration
Message-ID: <20180724215223.27516-2-dev+git@drbeat.li>
URL: https://gitlist.dev/e/20180724215223.27516-2-dev%2Bgit%40drbeat.li
In-Reply-To: <20180724215223.27516-1-dev+git@drbeat.li>

```
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. It seems that each
includer of packfile.h includes the definition of the enum before
including packfile.h.

Signed-off-by: Beat Bolli <dev+git@drbeat.li>
---
 packfile.h | 1 -
 1 file changed, 1 deletion(-)

diff --git a/packfile.h b/packfile.h
index 51383774ec72..9b6198c4c7e0 100644
--- a/packfile.h
+++ b/packfile.h
@@ -6,7 +6,6 @@
 /* in object-store.h */
 struct packed_git;
 struct object_info;
-enum object_type;
 
 /*
  * Generate the filename to be used for a pack file with checksum "sha1" and
-- 
2.18.0


```

## Jonathan Nieder, 2018-07-24 21:57

Subject: Re: [PATCH 1/2] packfile: drop a repeated enum declaration
Message-ID: <20180724215736.GC136514@aiede.svl.corp.google.com>
URL: https://gitlist.dev/e/20180724215736.GC136514%40aiede.svl.corp.google.com
In-Reply-To: <20180724215223.27516-2-dev+git@drbeat.li>

```
Hi,

Beat Bolli wrote:

> --- a/packfile.h
> +++ b/packfile.h
> @@ -6,7 +6,6 @@
>  /* in object-store.h */
>  struct packed_git;
>  struct object_info;
> -enum object_type;
>  
>  /*
>   * Generate the filename to be used for a pack file with checksum "sha1" and

Good catch.  This means packfile.h should #include "cache.h" ---
otherwise, it is not usable in a file that does

	#include "git-compat-util.h"
	#include "packfile.h"

Thanks and hope that helps,
Jonathan

```

## Jonathan Nieder, 2018-07-24 21:59

Subject: Re: [PATCH 2/2] remote-odb: un-inline function remote_odb_reinit
Message-ID: <20180724215953.GD136514@aiede.svl.corp.google.com>
URL: https://gitlist.dev/e/20180724215953.GD136514%40aiede.svl.corp.google.com
In-Reply-To: <20180724215223.27516-3-dev+git@drbeat.li>

```
Hi,

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
>
>     remote-odb.c:87:2: error: static function 'remote_odb_do_init' is
>     used in an inline function with external linkage
>     [-Werror,-Wstatic-in-inline]
>
> Remove the inline specifier that would only make sense if
> remote_odb_reinit were defined in the header file. Moving it into the
> header is not possible because the called function remote_odb_do_init is
> static and thus not visible from the includers of the header.
>
> Signed-off-by: Beat Bolli <dev+git@drbeat.li>
> ---
>  remote-odb.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)

What branch does this apply to?

[...]
> --- a/remote-odb.c
> +++ b/remote-odb.c
> @@ -82,7 +82,7 @@ static inline void remote_odb_init(void)
>  	remote_odb_do_init(0);
>  }
>  
> -inline void remote_odb_reinit(void)
> +void remote_odb_reinit(void)

This looks like an oversight in
https://public-inbox.org/git/20180713174959.16748-6-chriscool@tuxfamily.org/:
there isn't any reason for this function to be inline.

Christian, can you squash it in on your next reroll?

Thanks,
Jonathan

```

## Beat Bolli, 2018-07-24 22:03

Subject: Re: [PATCH 2/2] remote-odb: un-inline function remote_odb_reinit
Message-ID: <cf9889ba-89c5-dc97-d888-aa42aa9dee68@drbeat.li>
URL: https://gitlist.dev/e/cf9889ba-89c5-dc97-d888-aa42aa9dee68%40drbeat.li
In-Reply-To: <20180724215953.GD136514@aiede.svl.corp.google.com>

```
Hi Jonathan

On 24.07.18 23:59, Jonathan Nieder wrote:
> Hi,
> 
> 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
>>
>>     remote-odb.c:87:2: error: static function 'remote_odb_do_init' is
>>     used in an inline function with external linkage
>>     [-Werror,-Wstatic-in-inline]
>>
>> Remove the inline specifier that would only make sense if
>> remote_odb_reinit were defined in the header file. Moving it into the
>> header is not possible because the called function remote_odb_do_init is
>> static and thus not visible from the includers of the header.
>>
>> Signed-off-by: Beat Bolli <dev+git@drbeat.li>
>> ---
>>  remote-odb.c | 2 +-
>>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> What branch does this apply to?

To pu as of today.

> [...]
>> --- a/remote-odb.c
>> +++ b/remote-odb.c
>> @@ -82,7 +82,7 @@ static inline void remote_odb_init(void)
>>  	remote_odb_do_init(0);
>>  }
>>  
>> -inline void remote_odb_reinit(void)
>> +void remote_odb_reinit(void)
> 
> This looks like an oversight in
> https://public-inbox.org/git/20180713174959.16748-6-chriscool@tuxfamily.org/:
> there isn't any reason for this function to be inline.
> 
> Christian, can you squash it in on your next reroll?

That would probably make sense. I didn't check how mature the topics
were that caused errors.

Beat

```

## Christian Couder, 2018-07-25 07:29

Subject: Re: [PATCH 2/2] remote-odb: un-inline function remote_odb_reinit
Message-ID: <CAP8UFD2PxA4s=Gb-6paUAdWpmqMWpis3mn0Zz9nzqQhHt1EEBg@mail.gmail.com>
URL: https://gitlist.dev/e/CAP8UFD2PxA4s%3DGb-6paUAdWpmqMWpis3mn0Zz9nzqQhHt1EEBg%40mail.gmail.com
In-Reply-To: <cf9889ba-89c5-dc97-d888-aa42aa9dee68@drbeat.li>

```
Hi,

On Wed, Jul 25, 2018 at 12:03 AM, Beat Bolli <dev+git@drbeat.li> wrote:
>
> On 24.07.18 23:59, Jonathan Nieder wrote:
>>
>> Beat Bolli wrote:

>>> -inline void remote_odb_reinit(void)
>>> +void remote_odb_reinit(void)
>>
>> This looks like an oversight in
>> https://public-inbox.org/git/20180713174959.16748-6-chriscool@tuxfamily.org/:
>> there isn't any reason for this function to be inline.
>>
>> Christian, can you squash it in on your next reroll?
>
> That would probably make sense. I didn't check how mature the topics
> were that caused errors.

Ok, it is in the next version I will send.

Thanks,
Christian.

```

## Junio C Hamano, 2018-07-25 21:16

Subject: Re: [PATCH 2/2] remote-odb: un-inline function remote_odb_reinit
Message-ID: <xmqqmuuft3qs.fsf@gitster-ct.c.googlers.com>
URL: https://gitlist.dev/e/xmqqmuuft3qs.fsf%40gitster-ct.c.googlers.com
In-Reply-To: <CAP8UFD2PxA4s=Gb-6paUAdWpmqMWpis3mn0Zz9nzqQhHt1EEBg@mail.gmail.com>

```
Christian Couder <christian.couder@gmail.com> writes:

> Hi,
>
> On Wed, Jul 25, 2018 at 12:03 AM, Beat Bolli <dev+git@drbeat.li> wrote:
>>
>> On 24.07.18 23:59, Jonathan Nieder wrote:
>>>
>>> Beat Bolli wrote:
>
>>>> -inline void remote_odb_reinit(void)
>>>> +void remote_odb_reinit(void)
>>>
>>> This looks like an oversight in
>>> https://public-inbox.org/git/20180713174959.16748-6-chriscool@tuxfamily.org/:
>>> there isn't any reason for this function to be inline.
>>>
>>> Christian, can you squash it in on your next reroll?
>>
>> That would probably make sense. I didn't check how mature the topics
>> were that caused errors.
>
> Ok, it is in the next version I will send.

OK, then I'll ignore this one for now.

```
