Re: [Cocci] keeping cast affects match?

2016-02-17 Thread Julia Lawall
On Wed, 17 Feb 2016, Wolfram Sang wrote:

> > The isomorphism that allows ignoring a cast only works when the type
> > metavariable is used only once.  You uare using it twice.  The fact that
> > you wanted to add it indicates that you really want it to be there.
>
> Aha, I understand. Thank you for the explanation!
>
> > I think that everything should be fine if you just move the (T) out of the
> > removed and added code.
>
> Much better! I still fall for thinking too much in terms of 'lines'
> instead of 'tokens'. Prompt and proper response (again) much
> appreciated. Thank you a ton!

It's worth thinking twice if you find yourself removing something to add
it back.  Sometimes it's just more convenient, or even useful, because
Coccinelle is pretty good now at inserting newlines in the right place for
long argument lists, but when it is at one end or another of the pattern
like this, it can be better to just pull the common part out into the
context.

julia
___
Cocci mailing list
Cocci@systeme.lip6.fr
https://systeme.lip6.fr/mailman/listinfo/cocci


Re: [Cocci] keeping cast affects match?

2016-02-17 Thread Wolfram Sang
> The isomorphism that allows ignoring a cast only works when the type
> metavariable is used only once.  You uare using it twice.  The fact that
> you wanted to add it indicates that you really want it to be there.

Aha, I understand. Thank you for the explanation!

> I think that everything should be fine if you just move the (T) out of the
> removed and added code.

Much better! I still fall for thinking too much in terms of 'lines'
instead of 'tokens'. Prompt and proper response (again) much
appreciated. Thank you a ton!

   Wolfram



signature.asc
Description: PGP signature
___
Cocci mailing list
Cocci@systeme.lip6.fr
https://systeme.lip6.fr/mailman/listinfo/cocci


[Cocci] keeping cast affects match?

2016-02-17 Thread Wolfram Sang
Hi,

using Coccinelle v1.04 from Debian:

$ spatch -version
spatch version 1.0.4 with Python support and with PCRE support

The following semantic patch produces a match with current linux-next:

@@
expression table, dev;
type T;
@@
-   (T)of_match_device(table, dev)->data
+   of_device_get_match_data(dev)


$ spatch -sp_file minimal.cocci drivers/gpu/drm/rcar-du/
...
HANDLING: drivers/gpu/drm/rcar-du/rcar_du_drv.c
diff = 
diff -u -p a/rcar_du_drv.c b/rcar_du_drv.c
--- a/rcar_du_drv.c
+++ b/rcar_du_drv.c
@@ -183,7 +183,7 @@ static int rcar_du_load(struct drm_devic
init_waitqueue_head(>commit.wait);
 
rcdu->dev = >dev;
-   rcdu->info = of_match_device(rcar_du_of_table, rcdu->dev)->data;
+   rcdu->info = of_device_get_match_data(rcdu->dev);
rcdu->ddev = dev;
dev->dev_private = rcdu;

However, the match goes away when I want to keep a potential cast (T) which I
need in other places:

@@
expression table, dev;
type T;
@@
-   (T)of_match_device(table, dev)->data
+   (T)of_device_get_match_data(dev)

I wonder why adding (T) to "+" affects the matching. Is this a bug or do I miss
something?

Thanks,

   Wolfram



signature.asc
Description: PGP signature
___
Cocci mailing list
Cocci@systeme.lip6.fr
https://systeme.lip6.fr/mailman/listinfo/cocci