Hi,
It worked for me when I've removed the two ... inside the struct, like:
@findvar@ identifier i; @@
int i;
@expression@ identifier findvar.i; @@
+(
i
+)
@findfld@ identifier id, id3; @@
struct {
int id;
} id3;
@expression@ identifier x, findfld.id; @@
+(
x.id
+)
Does it work for you?
[]'s
Peter
On Fri, Sep 27, 2013 at 9:54 AM, Nic Volanschi (R&D)
<[email protected]> wrote:
> Hi,
>
> I found an unfortunate asymmetry on matching an identifier declared in a
> multiple declaration. In short, it works fine on a multiple variables
> declaration, but not on a multiple fields declaration.
>
> For example, the following semantic patch, adding parentheses around
> uses of integer variables and integer fields:
>
> --- intvar2.cocci:
> @findvar@ identifier i; @@
> int i;
>
> @expression@ identifier findvar.i; @@
> +(
> i
> +)
>
> @findfld@ identifier id, id3; @@
> struct {
> ...
> int id;
> ...} id3;
>
> @expression@ identifier x, findfld.id; @@
> +(
> x.id
> +)
>
> ---
> applied on the following program:
>
> --- intvar2.c:
> #include <stdio.h>
>
> struct {
> int f1, f2;
> int f3;
> } s;
>
> int main() {
> int i1, i2;
> int i3;
> i1 = 11;
> i2 = 22;
> i3 = 33;
> printf("%d, %d, %d\n", i1, i2, i3);
> s.f1 = 44;
> s.f2 = 55;
> s.f3 = 66;
> printf("{%d, %d, %d}\n", s.f1, s.f2, s.f3);
> }
>
> ---
> transforms variables i1, i2, i3, and field f3, but not fields f1 and f2.
>
> Is it possible to turn around this problem? Or even better, to fix
> it...?
>
> Thanks,
> Nic.
>
>
> _______________________________________________
> Cocci mailing list
> [email protected]
> https://systeme.lip6.fr/mailman/listinfo/cocci
--
Peter
_______________________________________________
Cocci mailing list
[email protected]
https://systeme.lip6.fr/mailman/listinfo/cocci