Re: New ARI warning Sat Mar 12 01:53:29 UTC 2011

Eli Zaretskii
2011-03-14T11:26:51Z

> From: "Pierre Muller" <pierre.muller@ics-cnrs.unistra.fr>
> Cc: <gdb-patches@sourceware.org>
> Date: Mon, 14 Mar 2011 09:20:07 +0100
>
> > The rule to detect "()" without a "void" is fine, but why on Earth do
> > we need the other rule, about prototypes like this:
> >
> > int
> > foo (bar);
> >
> > This is a perfectly valid formatting. In your patch, you modify long
> > prototypes like this as follows:
> >
> > extern struct hppa_objfile_private *
> > -hppa_init_objfile_priv_data (struct objfile *objfile);
> > + hppa_init_objfile_priv_data (struct objfile *objfile);
> >
> > But that is not a good idea, because if you type TAB in Emacs on the
> > line with the function name, Emacs will reindent the name to column
> > zero. So I expect this rule to annoy us quite a bit, e.g. if someone
> > reindents a large region.
> >
> > Can you tell why we need this?
>
> See
> http://sourceware.org/ml/gdb-patches/2011-03/msg00651.html

That was about _definitions_, not about declarations of prototypes.

Anyway, I don't see how is it relevant: that message talks about the
need to put the names of the functions in the beginning of a line (a
long standing GNU coding style practice), exactly the practice which
will according to your change trigger ARI warnings when used with a
prototype.

> I really thought that prototypes,
> either in header or in C sources should not be found by that
> pattern and that it shouls thus either be on a single line,
> or be indented to avoid being on first column.

Are we adding ARI warnings to help ARI find function implementations
and skip prototypes? If this is the need, why not look for the
semi-colon at the end of the prototype, which will be absent in
function definitions?

> Would it be better to reformat those as
> extern TYPE long_func_name
> (with_long_parameters);
> instead of
> extern TYPE
> long_func_name (with_long_parameters);

No, that's even uglier.

> I would really like to avoid getting both the
> prototype and the implementation if I do:
>
> grep "^func_name "

Then let's find a smarter way of finding just the implementation.
Forcing some unusual style on our code to help Grep is not a good
idea, IMO.