On Fri, 7 Jun 2019, Markus Elfring wrote: > > Just wrapping the assignment into the macro call turned out to be easy. > > I am curious how your transformation approaches will evolve further. > > > > But I haven't found a way to remove the now #ifdef :( > > The support for preprocessor functionality is limited by the semantic patch > language so far. > Would you like to try another SmPL script variant out? > > @replacement@ > constant text; > expression value; > identifier my_name; > type driver_type; > @@ > static > driver_type > my_name = { > .driver = { > - .name = text, > - .of_match_table = value, > - }, > + .name = text, > + .of_match_table = of_match_ptr(value), I guess that there is no guarantee that these are the only fields. julia > + }, > ... > }; > > > Do you find the following test result acceptable finally? > > > elfring@Sonne:~/Projekte/Linux/next-patched> spatch ~/Projekte/Coccinelle/Probe/Weigelt8.cocci sound/soc/codecs/pcm3060-i2c.c > init_defs_builtins: /usr/local/bin/../lib/coccinelle/standard.h > … > @@ -45,9 +45,7 @@ MODULE_DEVICE_TABLE(of, pcm3060_of_match > static struct i2c_driver pcm3060_i2c_driver = { > .driver = { > .name = "pcm3060", > -#ifdef CONFIG_OF > - .of_match_table = pcm3060_of_match, > -#endif /* CONFIG_OF */ > + .of_match_table = of_match_ptr(pcm3060_of_match), > }, > .id_table = pcm3060_i2c_id, > .probe = pcm3060_i2c_probe, > > > Regards, > Markus > _______________________________________________ > Cocci mailing list > Cocci@systeme.lip6.fr > https://systeme.lip6.fr/mailman/listinfo/cocci >