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

Reply via email to