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)