Hello,
I'm observing an odd behaviour difference when using an ellipses
following a plain expression or a sub-expression in <+... ...+>
Following coccinelle rule does not behave as expected:
// Sanity check to not use a RECT field in the SetRect.
@@
expression rect;
identifier fld;
@@
SetRect(&rect, ...,
- <+... rect.fld ...+>
+ BADBADBAD
,...)
It does not matches cases where the bad subexpression is the last
argument of the function call. E.g. for
void foo(void)
{
RECT r;
SetRect(&r, 0, 0, r.left, 0);
SetRect(&r, 0, 0, 0, r.top);
SetRect(&r, 0, 0, r.left + 1, 0);
SetRect(&r, 0, 0, 0, r.top + 1);
}
it modifies just the 1st and 3rd SetRect() call while it should match
all 4 cases.
If I just use rect.fld without the <+... ...+> the rule will match
correctly both the 1st and 2nd SetRect() call aka it matches at the end
of the argument list too.
Is this a bug? I'm running coccinelle 1.0.4.
thanks
bye
michael
P.S.: As a workaround I have created a separate rule for the last
argument and that works.
_______________________________________________
Cocci mailing list
[email protected]
https://systeme.lip6.fr/mailman/listinfo/cocci