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;
@@
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)