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);
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?