On 7 October 2011 16:39, Julia Lawall <[email protected]> wrote:
> How about trying:
>
> @@
> identifier n;
> expression E;
> @@
>
> ... when != n = E
> cartoon_random_generator(&n)
>

The spml above looks perfect for what I wanted, but I think I
have found a bug in coccinelle limiting possible use.
If I have the following code:

void test1(void)
{
        {
                int i;
                i = 42;
                printf("i = %d\n", i);
        }
        {
                int i;
                func(&i);
        }
}

void test2(void)
{
        {
                int j;
                j = 42;
                printf("j = %d\n", j);
        }
        {
                int i;
                func(&i);
        }
}

and use the following script:

@@
identifier n;
expression E;
@@

... when != n = E
* func(&n)

then coccinelle only prints func in test2.

Apparently it is not forgetting "i = 42" from the first block when
processing the
second block in func1, however from a semantic point of view that is wrong
since the two i variables live in different scopes. So to me that
seems like a bug.

BR Håkon Løvdal
_______________________________________________
Cocci mailing list
[email protected]
http://lists.diku.dk/mailman/listinfo/cocci
(Web access from inside DIKUs LAN only)

Reply via email to