Thread (6 messages) 6 messages, 2 authors, 2017-12-26

Re: [PATCH 0/1] Input: inline macros for MODULE_LICENSE, etc

From: Julia Lawall <hidden>
Date: 2017-12-26 17:56:38
Also in: kernel-janitors, lkml


On Tue, 26 Dec 2017, Joe Perches wrote:
On Tue, 2017-12-26 at 18:05 +0100, Julia Lawall wrote:
quoted
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);
quoted
MODULE_DESCRIPTION(c@i@p);
quoted
MODULE_LICENSE(c@i@p);
quoted
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
 );
quoted
MODULE_DESCRIPTION(
- i@p
+ e
 );
quoted
MODULE_LICENSE(
- i@p
+ e
 );
quoted
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
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help