bug-indent
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Regression in 2.2.11


From: Edward Hervey
Subject: Re: Regression in 2.2.11
Date: Mon, 05 Apr 2010 10:37:35 +0200

Hi,

  This construct is used quite a bit in GStreamer (where we are using
indent as a git pre-commit script to make sure all code is indented in a
unified fashion). If that construct wasn't allowed, considering the
number of esoteric platforms it compiles on... we'd know by now if it
wasn't valid C :)

  The result of '!!' ensures the result can only be 1 or 0.

   Edward

On Mon, 2010-04-05 at 10:24 +0200, indent wrote:
> I am very baffled as to why anyone would want to write "return !!a". Are
> you sure you're writing C and not some other language?
> 
> On 03/04/10 21:00, Edward Hervey wrote:
> > Hi,
> >
> >   I found a regression in indent 2.2.11.
> >
> >   The following code
> > a = !!b;
> >   Now becomes
> > a = ! !b;
> >
> >   This used to work perfectly fine with most versions of indent prior to
> > 2.2.11.
> >
> >   The regression was introduced with the 'fix' for avoiding "- --a"
> > becomeing "---a".
> >
> >   A simple fix for this would be to check if the token in question is
> > not the '!' operator:
> >
> > Line 616:
> > -------------
> >             if ((parser_state_tos->last_token == unary_op) &&
> > -               (e_code > s_code) &&
> > +               (e_code > s_code) && (*res != '!') &&
> >                 (*(e_code - 1) == *res))
> >             {
> >                 *(e_code++) = ' ';
> >             }
> > --------------
> >
> > Sample test for regression:
> > ------------------
> > int
> > foo(int a)
> > {
> >   return !!a;
> > }
> > ------------------
> >
> >    Edward
> >
> >
> >
> > _______________________________________________
> > bug-indent mailing list
> > address@hidden
> > http://lists.gnu.org/mailman/listinfo/bug-indent
> >
> >   
> 






reply via email to

[Prev in Thread] Current Thread [Next in Thread]