summaryrefslogtreecommitdiffstats
path: root/coccinelle/in_set.cocci
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-10 20:49:52 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-10 20:49:52 +0000
commit55944e5e40b1be2afc4855d8d2baf4b73d1876b5 (patch)
tree33f869f55a1b149e9b7c2b7e201867ca5dd52992 /coccinelle/in_set.cocci
parentInitial commit. (diff)
downloadsystemd-55944e5e40b1be2afc4855d8d2baf4b73d1876b5.tar.xz
systemd-55944e5e40b1be2afc4855d8d2baf4b73d1876b5.zip
Adding upstream version 255.4.upstream/255.4
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'coccinelle/in_set.cocci')
-rw-r--r--coccinelle/in_set.cocci38
1 files changed, 38 insertions, 0 deletions
diff --git a/coccinelle/in_set.cocci b/coccinelle/in_set.cocci
new file mode 100644
index 0000000..a3b02f9
--- /dev/null
+++ b/coccinelle/in_set.cocci
@@ -0,0 +1,38 @@
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
+/* Limit the number of expressions to 6 for performance reasons */
+
+@ is_in_assert_cc @
+identifier id = assert_cc;
+position p1;
+expression e;
+constant n0;
+@@
+
+ id(e@p1 == n0 || ...);
+
+@@
+expression e;
+position p2 != is_in_assert_cc.p1;
+/* Exclude JsonVariant * from the transformation, as it can't work with the
+ * current version of the IN_SET macro */
+typedef JsonVariant;
+type T != JsonVariant*;
+constant T n0, n1, n2, n3, n4, n5;
+@@
+
+(
+- e@p2 == n0 || e == n1 || e == n2 || e == n3 || e == n4 || e == n5
++ IN_SET(e, n0, n1, n2, n3, n4, n5)
+|
+- e@p2 == n0 || e == n1 || e == n2 || e == n3 || e == n4
++ IN_SET(e, n0, n1, n2, n3, n4)
+|
+- e@p2 == n0 || e == n1 || e == n2 || e == n3
++ IN_SET(e, n0, n1, n2, n3)
+|
+- e@p2 == n0 || e == n1 || e == n2
++ IN_SET(e, n0, n1, n2)
+|
+- e@p2 == n0 || e == n1
++ IN_SET(e, n0, n1)
+)