These patches result from the following semantic patch (http://coccinelle.lip6.fr/), which checks for expression statements separated by , rather than by ;. The rule is quite conservative in that it only finds cases where this pattern appears after a statement that ends with ;, to ensure that the expression statements do not form an if branch or loop body. Iteration is used to treat arbitrary sequences of commas. // <smpl> @initialize:ocaml@ let tbl = Hashtbl.create(100) let add_if_not_present file = try let _ = Hashtbl.find tbl file in () with Not_found -> Hashtbl.add tbl file (); let it = new iteration() in it#set_files [file]; it#register() @script:ocaml@ @@ Hashtbl.clear tbl @r@ expression e1,e2,e; position p1,p2; type T; identifier i; @@ ( T i = ...; | e; ) e1,@p1 e2@p2; @script:ocaml@ p1 << r.p1; p2 << r.p2; @@ if (List.hd p1).line = (List.hd p2).line then include_match false else add_if_not_present ((List.hd p1).file) @@ expression e1,e2; position r.p1; @@ e1 - ,@p1 + ; e2; // </smpl> -- To unsubscribe from this list: send the line "unsubscribe kernel-janitors" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html