Linux-libre 5.4.47-gnu
[librecmc/linux-libre.git] / scripts / coccinelle / misc / semicolon.cocci
1 // SPDX-License-Identifier: GPL-2.0-only
2 ///
3 /// Remove unneeded semicolon.
4 ///
5 // Confidence: Moderate
6 // Copyright: (C) 2012 Peter Senna Tschudin, INRIA/LIP6.
7 // URL: http://coccinelle.lip6.fr/
8 // Comments: Some false positives on empty default cases in switch statements.
9 // Options: --no-includes --include-headers
10
11 virtual patch
12 virtual report
13 virtual context
14 virtual org
15
16 @r_default@
17 position p;
18 @@
19 switch (...)
20 {
21 default: ...;@p
22 }
23
24 @r_case@
25 position p;
26 @@
27 (
28 switch (...)
29 {
30 case ...:;@p
31 }
32 |
33 switch (...)
34 {
35 case ...:...
36 case ...:;@p
37 }
38 |
39 switch (...)
40 {
41 case ...:...
42 case ...:
43 case ...:;@p
44 }
45 )
46
47 @r1@
48 statement S;
49 position p1;
50 position p != {r_default.p, r_case.p};
51 identifier label;
52 @@
53 (
54 label:;
55 |
56 S@p1;@p
57 )
58
59 @script:python@
60 p << r1.p;
61 p1 << r1.p1;
62 @@
63 if p[0].line != p1[0].line_end:
64         cocci.include_match(False)
65
66 @depends on patch@
67 position r1.p;
68 @@
69 -;@p
70
71 @script:python depends on report@
72 p << r1.p;
73 @@
74 coccilib.report.print_report(p[0],"Unneeded semicolon")
75
76 @depends on context@
77 position r1.p;
78 @@
79 *;@p
80
81 @script:python depends on org@
82 p << r1.p;
83 @@
84 cocci.print_main("Unneeded semicolon",p)