Please put when any on the ...

Would you like to clarify these SmPL key words a bit more in the documentation?


elfring@Sonne:~/Projekte/Coccinelle/Probe> SRC=f-ptr-test2.c && cat $SRC && LINE='-----' && echo $LINE && PAT=assignment_pattern6.cocci && cat $PAT && echo $LINE && spatch -sp_file $PAT $SRC
int my_addition(char a, char b)
{
  return a + b;
}

int main(void)
{
  struct my_operations
  {
    int (*add)(char a, char b);
  } mo = {my_addition}, * mop = &mo;

  int y = mop->add(8, 9);
  y = mop->add(1, 2);
  y = mo.add(3, 4);
  y = mo.add(5, 6);
  y = mop->add(7, 8);
}
-----
@is_assigned@
type t;
expression x, y;
expression f != {strcpy, strcat, fread, fclose, add, log};
statement S1, S2, S3, S4;
@@
*y = (t) (x)(...)
 ... when any
     when != if (<+...y...+>) S1 else S2
     when != (f)(...,<+...y...+>,...)
     when != for (...;<+...y...+>;...) S3
     when != while (<+...y...+>) S4
     when != switch (<+...y...+>) { case ... : ... }
     when != (<+...y...+>) ? ... : ...
-----
init_defs_builtins: /usr/share/coccinelle/standard.h
HANDLING: f-ptr-test2.c
diff =
--- f-ptr-test2.c
+++ /tmp/cocci-output-14847-953c95-f-ptr-test2.c
@@ -10,9 +10,4 @@ int main(void)
     int (*add)(char a, char b);
   } mo = {my_addition}, * mop = &mo;

-  int y = mop->add(8, 9);
-  y = mop->add(1, 2);
-  y = mo.add(3, 4);
-  y = mo.add(5, 6);
-  y = mop->add(7, 8);
 }


This analysis result looks fine.

Regards,
Markus
_______________________________________________
Cocci mailing list
[email protected]
http://lists.diku.dk/mailman/listinfo/cocci
(Web access from inside DIKUs LAN only)

Reply via email to