On 08/03/2012 07:20 PM, Lars-Peter Clausen wrote:
> On 08/03/2012 06:36 PM, Julia Lawall wrote:
>>> This one is a bit tricky, but it takes care of the case where cocci can't
>>> parse the statement inform of the semicolon.
>>
>> A simpler approach would be as follows:
>>
>>> @r1@
>>> statement S;
>>> position p;
>> position p1;
>>> @@
>>> S
>>
>> change to S@p1
>>
>>> ;@p
>>>
>>> @script:python r2@
>>> p << r1.p;
>>> @@
>>
>> Change to call cocci.include_match(False) if p1[0].line_end != p[0].line
>
> Hm, that's a good idea. But I guess it may produce false positives for
> something like foo(); not_parseable(...);, but that's probably bad coding
> style anyway.
>
> And this still leaves us with the false positives for case:; and default:;
>
> Maybe this could work:
> @r_case@
> position p;
> @@
> switch (...)
> {
> case ...: ...;@p
> }
>
> @r_default@
> position p;
> @@
> switch (...)
> {
> default: ...;@p
> }
>
> @r1@
> statement S;
> position p1;
> position p != {r_case.p, r_default.p};
> identifier label;
> @@
> (
> label:;
> |
> S@p1;@p
> )
>
> @script:python r2@
> p << r1.p;
> p_case << r_case.p;
Without the line above...
> p1 << r1.p1;
> @@
> if p[0].line != p1[0].line_end:
> cocci.include_match(False)
>
> @@
> position r1.p;
> @@
> -;@p
> _______________________________________________
> 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)