On Fri, Oct 29, 2010 at 3:24 PM, Julia Lawall <[email protected]> wrote:
> On Thu, 28 Oct 2010, Andi Kleen wrote:
>
>> > > How to express that in smpl?
>> >
>> > ... when != S
>> > {Some statement}
>> >
>> > where S is a statement metavariable. {Some statement} might also be
>> > another statement metavariable if you don't know what kind of statement to
>> > expect. There is probably some more complicated way of dealing with
>> > functions that only have declarations and no following statement, but I
>> > guess that would be quite rare.
>>
>> Thanks Julia. That worked, except that it skipped the empty line
>> after the declarations too, so I ended up with
>>
>> foo()
>> {
>> int x;
>> <--- empty line
>> int y; <--- my new statement
>>
>> But I guess that can be manually removed or is there a way to tell this
>> cocci too?
>
> The following should work, but it does not. It attaches to each
> declaration. I think it is optimising too much the S. I will take a look
> later today.
I think it is the missing use of r.p in the code part.
>
> @r@
> declaration D;
> statement S;
> identifier f;
> position p;
> @@
>
> f(...) {
> ... when any
> �...@p
> S
> ... when any
> }
>
> @@
> declaration D;
> position r.p;
> @@
>
> D
d...@p
> + int a;
>
> julia
> _______________________________________________
> Cocci mailing list
> [email protected]
> http://lists.diku.dk/mailman/listinfo/cocci
> (Web access from inside DIKUs LAN only)
>
--
Nicolas Palix
Tel: +33 6 81 07 91 72
_______________________________________________
Cocci mailing list
[email protected]
http://lists.diku.dk/mailman/listinfo/cocci
(Web access from inside DIKUs LAN only)