On Tue, 10 Sep 2013, Wegge, Anders wrote:

> Hi Julia,
>
> We have an example from the wild:
>
> void ichain (SleepMess *m)
> {
>     register SleepChain         *p ;
>     register int                n ;
>
>     /* default is a new element                                         */
>     n = chain_end ;
>
>     /* try to find it and overwrite an old one                          */
>     p = sleepc ;
>     for (n = 0; n < chain_end; n++, p++)
>         if (p->sleepmess.id == m->id)
>             break ;
>
> ...
>
>     if (dflag (DF_clock)) {
>         testlog ("%s(%d): New element %d, acode=0x%02x, rcode=0x%02x",
>                  __FILE__, __LINE__, chain_end, 
> sleepc[n].sleepmess.head.acode,
>                  sleepc[n].sleepmess.head.rcode) ;
>     }
> }
>
> The for and if in the code above is contrary to our in-house coding spec, so 
> what we're looking for is a way to transform it into
>
>     for (n = 0; n < chain_end; n++, p++) {
>         if (p->sleepmess.id == m->id) {
>             break ;
>       }
>     }
>
>  Without touching the testlog line further down in the example.
>
> PS. I'm working with Andreas, which is why I'm making a followup.

A quick answer:

@r@
statement S;
@@

(
if (...) { ... }
|
if (...)
+{
 S
+}
)

This would work better with the patch I posted recently in response one of
Nic's queries.

julia




> -----Original Message-----
> From: [email protected] [mailto:[email protected]] On 
> Behalf Of Julia Lawall
> Sent: 10. september 2013 15:22
> To: Aaen, Andreas.Bach
> Cc: '[email protected]'
> Subject: Re: [Cocci] if (expr) expr -> if (expr) { expr }
>
> On Tue, 10 Sep 2013, Aaen, Andreas.Bach wrote:
>
> >
> > Hi,
> >
> >  
> >
> > How can you make Coccinelle assist you in inserting braces around
> > expressions after if statements?
> >
> > Semantically the two expressions are identical, but the variant
> > without braces often lead to bugs when the code is extended.
>
> Could you send a concrete example?
>
> thanks,
> julia
>
_______________________________________________
Cocci mailing list
[email protected]
https://systeme.lip6.fr/mailman/listinfo/cocci

Reply via email to