On Fri, 17 Jun 2011, Nicolas Palix wrote:

> Hi,
> 
> On Fri, Jun 17, 2011 at 5:46 AM, Matthew Dempsky <[email protected]> wrote:
> > So there's this isomorphism entry in standard.iso:
> >
> > <<<<<<<<
> > Expression
> > @ fld_to_ptr @
> > type T;
> > pure T E;
> > pure T *E1;
> > identifier fld;
> > @@
> >
> > E.fld => E1->fld
> >>>>>>>>>
> >
> > However, when I apply this patch:
> >
> > <<<<<<<<
> > @@
> > struct bar1 b;
> > @@
> > -       b.x = 7;
> > +       b.x = 42;
> 
> It works as intented with
> 
> @@
> struct bar1 b;
> @@
>         b.x =
> -        7
> +       42
> 

Yes.  Thanks.  That is the point of the annotation "pure".  In this case, 
Coccinelle doesn't know how to apply the isomorphism to the + code.  So if 
the semantic patch code matching the isomorphism contains metavariables 
that are used in + code, the isomorphism doesn't apply.  You should get a 
warning about this with -parse_cocci, although it may be cryptic.

julia

> > @@
> > struct bar2 *b;
> > @@
> > -       b->x = 7;
> > +       b->x = 42;
> >>>>>>>>>
> >
> > to this source file:
> >
> > <<<<<<<<
> > struct bar1 { int x; };
> > struct bar2 { int x; };
> >
> > void foo()
> > {
> >  struct bar1 b1, *b1p = &b1;
> >  struct bar2 b2, *b2p = &b2;
> >
> >  b1.x = 7;
> >  b1p->x = 7;
> >  b2.x = 7;
> >  b2p->x = 7;
> > }
> >>>>>>>>>
> >
> > I get this output:
> >
> > <<<<<<<<
> > --- beep.c      2011-06-16 20:05:36.043895682 -0700
> > +++ /tmp/cocci-output-16053-12cb3c-beep.c       2011-06-16 
> > 20:17:07.143132324 -0700
> > @@ -6,8 +6,8 @@ void foo()
> >   struct bar1 b1, *b1p = &b1;
> >   struct bar2 b2, *b2p = &b2;
> >
> > -  b1.x = 7;
> > +  b1.x = 42;
> >   b1p->x = 7;
> >   b2.x = 7;
> > -  b2p->x = 7;
> > +  b2p->x = 42;
> >  }
> >>>>>>>>>
> >
> > I expect I'm missing something simple, but shouldn't at least three of
> > the assignments change?
> > _______________________________________________
> > Cocci mailing list
> > [email protected]
> > http://lists.diku.dk/mailman/listinfo/cocci
> > (Web access from inside DIKUs LAN only)
> >
> 
> 
> 
> -- 
> Nicolas Palix
> http://sardes.inrialpes.fr/~npalix/
> _______________________________________________
> Cocci mailing list
> [email protected]
> http://lists.diku.dk/mailman/listinfo/cocci
> (Web access from inside DIKUs LAN only)
> 
_______________________________________________
Cocci mailing list
[email protected]
http://lists.diku.dk/mailman/listinfo/cocci
(Web access from inside DIKUs LAN only)

Reply via email to