Re: list iterator spacing: clang-format vs checkpatch

From: Joe Perches
Date: Mon Oct 08 2018 - 11:40:55 EST


On Mon, 2018-10-08 at 09:31 +0200, Miguel Ojeda wrote:
> On Mon, Oct 8, 2018 at 4:01 AM Jason A. Donenfeld <Jason@xxxxxxxxx> wrote:
> > The shiny new .clang-format file lists a number of nice iterators in
> > the ForEachMacros category, the consequence being that there is a
> > space between the iterator name and the opening parenthesis. This
> > strikes me as the right thing to do.

It does not strike me as the right thing to do.

Keeping an exhaustive list current is a continuing
burden and the list generally goes stale over time.

> > However, checkpatch.pl complains about it:
> >
> > WARNING: space prohibited between function name and open parenthesis '('
> > #65: FILE: ratelimiter.c:65:
> > + hlist_for_each_entry_safe (entry, temp, &table_v4[i], hash) {
> >
> > It would seem that .clang-format is right and checkpatch.pl is wrong?
>
> Checking quickly, it would seem most of the kernel does not put a
> space there (a minority does), e.g.:
>
> git grep 'list_for_each[a-zA-Z0-9_]* (' | wc -l # 67
> git grep 'list_for_each[a-zA-Z0-9_]*(' | wc -l # 13892
>
> So in that sense, checkpatch.pl is right (even if it is not a function call).

As a general rule, I believe any dominant coding style
is correct. These things are just a convention.

.clang-format is a work in progress and should be updated
where possible to reflect the kernel dominant styles.

> We would probably need to implement SpaceBeforeForEachMacros (or a new
> option for SpaceBeforeParens). I haven't had the time to look into
> adding the missing support for the few things that the kernel style
> requires, sadly, but it is in my TODO list.

Good luck and as you are the .clang_format maintainer,
I hope you find the time.