Hi,

When a iterator, which has been defined with 'iterator name ...', is pretty
printed there are spaces missing between the different comma separated 
arguments.

E.g. the following in a cocci file

@@
iterator name for_each_set_bit;
@@
...
+for_each_set_bit(bit, bitmap, size)
...

results in a patch with
...
+for_each_set_bit(bit,bitmap,size)
...


I came up with the following patch

--- a/parsing_c/unparse_cocci.ml
+++ b/parsing_c/unparse_cocci.ml
@@ -826,7 +826,7 @@ and rule_elem arity re =
   | Ast.IteratorHeader(nm,lp,args,rp) ->
       pr_arity arity;
       ident nm; pr_space(); mcode print_string_box lp;
-      dots (function _ -> ()) expression args; close_box();
+      dots (function _ -> ()) arg_expression args; close_box();
       mcode print_string rp

   | Ast.SwitchHeader(switch,lp,exp,rp) ->

Which seems to do the trick for some cases. But if the iterator is not followed
by a statement in the cocci file, i.e. there is no body, it is not parsed as a
iterator, but just as MetaId + ExprDotsTag and again it is printed without the
spaces.

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

Reply via email to