On Wed, 2016-08-31 at 11:09 +0200, Marek Polacek wrote:
> On Tue, Aug 30, 2016 at 11:22:21AM -0400, David Malcolm wrote:
> > On Tue, 2016-08-30 at 16:50 +0200, Marek Polacek wrote:
> > > On Tue, Aug 30, 2016 at 04:40:57PM +0200, Bernd Schmidt wrote:
> > > > On 08/30/2016 04:38 PM, David Malcolm wrote:
> > > > 
> > > > > In conjunction with the not-yet-in-trunk -fdiagnostics
> > > > > -generate
> > > > > -patch,
> > > > > this can generate patches like this:
> > > > > 
> > > > > --- modernize-named-inits.c
> > > > > +++ modernize-named-inits.c
> > > > > @@ -16,7 +16,7 @@
> > > > >  /* Old-style named initializers.  */
> > > > > 
> > > > >  struct foo old_style_f = {
> > > > > - foo: 1,
> > > > > - bar: 2,
> > > > > + .foo= 1,
> > > > > + .bar= 2,
> > > > >  };
> > > > 
> > > > What happens if there are newlines in between any of the
> > > > tokens?
> > > 
> > > It's easy to check for yourself: when the identifier and colon
> > > are
> > > not
> > > on the same line, we print something like
> > > 
> > > w.c: In function ‘main’:
> > > w.c:7:1: warning: obsolete use of designated initializer with ‘:’
> > > [
> > > -Wpedantic]
> > >  :
> > >  ^
> > >   =
> > > 
> > > which I don't think is desirable -- giving up on the fix-it hint
> > > in
> > > such case
> > > could be appropriate.
> > 
> > I think that's a bug in diagnostic-show-locus.c; currently it only
> > prints lines and fixits for the lines references in the ranges
> > within
> > the rich_location.  I'll try to fix that.
> > 
> > > I admit I dislike the lack of a space before = in ".bar= 2", but
> > > using
> > >   
> > >   richloc.add_fixit_replace (colon_loc, " =");
> > > 
> > > wouldn't work for "foo : 1" I think.
> > 
> > I actually tried that first, but I didn't like the way it was
> > printed
> > e.g.:
> > 
> > w.c: In function ‘main’:> w.c:7:1: warning: obsolete use of
> > designated
> > initializer with ‘:’ [-Wpedantic]>
> >   foo: 1,
> >      ^
> >   .   =
> > 
> > I'm looking at rewriting how fixits get printed, to print the
> > affected
> > range of the affected lines (using the edit-context.c work posted
> > last
> > week), so this would appear as:
> > 
> >   foo: 1,
> >      ^
> >   .foo =
>  
> This would be perfect.

BTW, this is currently blocked, I need review of this patch:
  "[PATCH 2/4] Improvements to typed_splay_tree"
   * https://gcc.gnu.org/ml/gcc-patches/2016-08/msg01777.html

(I've rewritten edit_context to work on a per-line basis, so it should
now be efficient enough for this use-case)

> > Also, there may be a case for adding some smarts to
> > gcc_rich_location for adding fixits in a formatting-aware way, by
> > looking at the neighboring whitespace (this might help for the
> > issue with adding "break;" etc in the fallthru patch kit).
> 
> Thanks.  I hope it won't be too hard to implement :/

I'll try...

Reply via email to