From mboxrd@z Thu Jan 1 00:00:00 1970 From: mcgrof@kernel.org (Luis R. Rodriguez) Date: Fri, 10 Jun 2016 23:44:20 -0700 Subject: [Cocci] Making conjunctions smaller In-Reply-To: References: Message-ID: To: cocci@systeme.lip6.fr List-Id: cocci@systeme.lip6.fr On Fri, Jun 10, 2016 at 10:12 PM, Julia Lawall wrote: > > > On Fri, 10 Jun 2016, Luis R. Rodriguez wrote: > >> I have a series of changes, and I want to only make a subsequent >> change if and only if at least one of a series of previous declared >> rules were matched. I can do this by depends on foo1 || foo2 || foo3 >> || foo4, etc however since I have a lot of rules I was hoping I could >> condense these into one. What would be the best way to do that? >> >> This is just to reduce a long list of conjunctions to a much simpler set. > > Disjunctions, I guess? Heh yes sorry. > I guess you could make a rule that is guaranteed to match for some > reason and put > > @combined depends on a || b || c || d || e@ > identifier f; > @@ > > f(...) > > Here I match any function call, because any file of interest probably > contains at least one. But if possible it would be better to put a > pattern that matches less often, because Coccinelle really will be doing > the work of making these matches. I suspected this, I had used #include ... as I think most files has this but I was concerned over the impact as you noted. A python way to add a virtual rule would have been another option but it seems only iteration supports that. > I think that the long list of ||s would be better. OK, I'll do that. Luis