Messages in this thread | | | Date | Tue, 20 Dec 2011 23:24:13 +0100 (CET) | From | Julia Lawall <> | Subject | Re: [Cocci] [PATCH 2/2] coccinelle: Add patch for replacing open-coded IS_ERR_OR_NULL |
| |
For this one, I made quite a number of changes, some of which required fixing a bug in Coccinelle... I will try to release the bug fix shortly. In general, though, I have added ... between the two tests. I also got rid of the focus on ifs in the org and report rules.
julia
virtual context virtual patch virtual org virtual report
// Since the logical or operator by itself is not commutative we need rules for // both cases as well as for their De Morgan equivalents.
@depends on context@ expression x; @@ * IS_ERR(x) || ... || * x == NULL
@depends on context@ expression x; @@ * x == NULL || ... || * IS_ERR(x)
@depends on context@ expression x; @@ * !IS_ERR(x) && ... && * x != NULL
@depends on context@ expression x; @@ * x != NULL && ... && * !IS_ERR(x)
@depends on patch@ expression x; @@ - IS_ERR(x) + IS_ERR_OR_NULL(x) || ... - || x == NULL
@depends on patch@ expression x; @@ - x == NULL + IS_ERR_OR_NULL(x) || ... - || IS_ERR(x)
@depends on patch@ expression x; @@ - !IS_ERR(x) + !IS_ERR_OR_NULL(x) && ... - && x != NULL
@depends on patch@ expression x; @@ - x != NULL + !IS_ERR_OR_NULL(x) && ... - && !IS_ERR(x)
@r depends on org || report@ expression x; position p; @@ ( IS_ERR@p(x) || ... || x == NULL | x == NULL || ... || IS_ERR@p(x) | !IS_ERR@p(x) && ... && x != NULL | x != NULL && ... && !IS_ERR@p(x) )
@script:python depends on org@ p << r.p; x << r.x; @@
msg="IS_ERR_OR_NULL can be used with %s" % (x) msg_safe=msg.replace("[","@(").replace("]",")") coccilib.org.print_todo(p[0], msg_safe)
@script:python depends on report@ p << r.p; x << r.x; @@
msg="IS_ERR_OR_NULL can be used with %s" % (x) coccilib.report.print_report(p[0], msg)
| |