On Thu, 8 Dec 2016, Michael Stefaniuc wrote:

> On 11/29/2016 11:49 PM, Julia Lawall wrote:
> >
> >
> > On Sun, 27 Nov 2016, Julia Lawall wrote:
> >
> >>> @@
> >>> {r1.T, r2.T} obj;
> >>> @@
> >>>
> >>> That only matches when both r1.T and r2.T are defined. That kinda feels
> >>> odd but probably is easier to implement as all inherited variables need
> >>> to be bound. I have quiet a few duplicated rules across multiple scripts
> >>> due to that.
> >>
> >> This problem is fixed by the following patch.  Will appear in github
> >> shortly, but not immediately.
> >
> > The change is now available in the github version.  It is also now
> Thanks Julia, I have tested the change and it seems to work.
>
> > possible, thanks to Thierry, to put negated constraints on type variables,
> Is there a way to have the positive constraint variant too?
> That doesn't seem that useful for static types like int and char but can
> avoid rule duplication when the type is inherited from 2 or more rules
> that don't match at the same time. E.g.:
> @@
> type T = {r1.T, r2.T};
> @@
>  T *foo =
> -          xyz
> +          abc
>  ;
>
> Now in my specific case I'm getting the error:
> meta: semantic error: incompatible inheritance declaration T

It should be possible.  I'll check with Thierry about it.

Too much mixing of metavariables from different sources tends to cause
performance problems.  This is just my experience; perhapsitis ok in this
case.

julia

>
> > as illustrated by the following semantic patch
> > (tests/type_constraints.cocci):
> >
> > @@
> > type T != { int, char };
> > identifier x;
> > @@
> > -   T x;
> > +   T *x;
>
> thanks
> bye
>       michael
>
_______________________________________________
Cocci mailing list
[email protected]
https://systeme.lip6.fr/mailman/listinfo/cocci

Reply via email to