[Top][All Lists]
[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
> >
> >
>