On Sun, 23 Jun 2019, Markus Elfring wrote:
> > Yu can do whatever you want, but you will get lotsof false positives if
> > you keep it. If you really want a star on the declaration then you need
> > to make two rules. The first that finds the positions of the places that
> > match and the second that only puts a * when there is both a matched
> > declaration and a matched reinitialization.
>
> I hoped that the following SmPL script variant can be another approximation
> for the desired solution on the discussed source code search pattern.
>
>
> @display@
> binary operator bo1, bo2;
> expression action, e1, e2 != e1, e3, e4, e5;
> identifier var;
> statement es1, is2, es2, is3, es3;
> type t;
> @@
> (
> t var = e1;
> <+...
> if (...)
> {
> var = e2;
> ...
> }
> else
> es1
> ...+>
> if ( \( var \| var bo1 e3 \) )
> is2
> else
> es2
> |
> t var
> * = e1
> ;
> ... when != if ( \( var \| var bo2 e4 \) ) is3 else es3
> when != action(..., var, ...)
> when != switch (var) { default: ... }
> when exists
> (
> *e5 = <+... var ...+>
> |
> *var = e5
> )
> )
>
>
> But I stumble on the following error message.
>
> elfring@Sonne:~/Projekte/Linux/next-patched> git checkout next-20190620 &&
> spatch drivers/misc/lkdtm/core.c
> ~/Projekte/Coccinelle/janitor/show_questionable_variable_initialisation5.cocci
> …
> minus: parse error:
> File
> "/home/elfring/Projekte/Coccinelle/janitor/show_questionable_variable_initialisation5.cocci",
> line 36, column 0, charpos = 492
> around = ')',
> whole content = )
>
>
> I observed then that each of the two main branches in the shown SmPL
> disjunction
> can work as expected. So I wonder even more why the combination can not be
> parsed
> by the software “Coccinelle 1.0.7-00211-geaa13d59 (OCaml 4.07.1)” so far.
Try
... when any
just before the final ). In some circumstaces the parser doesn't accept
an expression at the end of a sequence like you have here.
julia_______________________________________________
Cocci mailing list
[email protected]
https://systeme.lip6.fr/mailman/listinfo/cocci