On Tue, 26 Dec 2017, Joe Perches wrote: > On Tue, 2017-12-26 at 18:05 +0100, Julia Lawall wrote: > > Inline macro for MODULE_LICENSE to make the license information easy to > > find, eg with grep. Inline the other module-related macros at the same > > time. > > > > The complete semantic patch is as follows: (http://coccinelle.lip6.fr/) > > > > // <smpl> > > @q@ > > declarer name MODULE_LICENSE; > > identifier i; > > constant c; > > position p; > > @@ > > > > MODULE_LICENSE(c@i@p); > > > > @r depends on q@ > > declarer name MODULE_AUTHOR, MODULE_DESCRIPTION, MODULE_VERSION; > > identifier i; > > constant c; > > position p; > > @@ > > > > ( > > MODULE_AUTHOR(c@i@p); > > > > > > > MODULE_DESCRIPTION(c@i@p); > > > > > > > MODULE_LICENSE(c@i@p); > > > > > > > MODULE_VERSION(c@i@p); > > ) > > > > @other@ > > identifier r.i; > > position p != r.p; > > @@ > > > > i@p > > > > @s depends on !other@ > > identifier r.i; > > expression e; > > @@ > > > > #define i e > > > > @@ > > identifier r.i; > > position r.p; > > expression s.e; > > @@ > > > > ( > > MODULE_AUTHOR( > > - i@p > > + e > > ); > > > > > > > MODULE_DESCRIPTION( > > - i@p > > + e > > ); > > > > > > > MODULE_LICENSE( > > - i@p > > + e > > ); > > > > > > > MODULE_VERSION( > > - i@p > > + e > > ); > > ) > > > > @@ > > identifier r.i; > > expression s.e; > > @@ > > > > -#define i e > > // </smpl> > > What assures that the #define is only used by > MODULE_<FOO> and is not used in any other way? These two rules: @other@ identifier r.i; position p != r.p; @@ i@p @s depends on !other@ identifier r.i; expression e; @@ #define i e The first rule checks for uses that are different than the one in the MODULE_XXX call. The second rule only matches the #define if the first rule fails, ie there are no other uses. julia -- 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