1 // RUN: %check_clang_tidy %s bugprone-suspicious-semicolon %t
2
3 int x = 5;
4
5 void nop();
6
correct1()7 void correct1()
8 {
9 if(x < 5) nop();
10 }
11
correct2()12 void correct2()
13 {
14 if(x == 5)
15 nop();
16 }
17
correct3()18 void correct3()
19 {
20 if(x > 5)
21 {
22 nop();
23 }
24 }
25
fail1()26 void fail1()
27 {
28 if(x > 5); nop();
29 // CHECK-MESSAGES: :[[@LINE-1]]:12: warning: potentially unintended semicolon [bugprone-suspicious-semicolon]
30 // CHECK-FIXES: if(x > 5) nop();
31 }
32
fail2()33 void fail2()
34 {
35 if(x == 5);
36 nop();
37 // CHECK-MESSAGES: :[[@LINE-2]]:12: warning: potentially unintended semicolon [bugprone-suspicious-semicolon]
38 // CHECK-FIXES: if(x == 5){{$}}
39 }
40
fail3()41 void fail3()
42 {
43 if(x < 5);
44 {
45 nop();
46 }
47 // CHECK-MESSAGES: :[[@LINE-4]]:11: warning: potentially unintended semicolon
48 // CHECK-FIXES: if(x < 5){{$}}
49 }
50
correct4()51 void correct4()
52 {
53 while(x % 5 == 1);
54 nop();
55 }
56
correct5()57 void correct5()
58 {
59 for(int i = 0; i < x; ++i)
60 ;
61 }
62
fail4()63 void fail4()
64 {
65 for(int i = 0; i < x; ++i);
66 nop();
67 // CHECK-MESSAGES: :[[@LINE-2]]:28: warning: potentially unintended semicolon
68 // CHECK-FIXES: for(int i = 0; i < x; ++i){{$}}
69 }
70
fail5()71 void fail5()
72 {
73 if(x % 5 == 1);
74 nop();
75 // CHECK-MESSAGES: :[[@LINE-2]]:16: warning: potentially unintended semicolon
76 // CHECK-FIXES: if(x % 5 == 1){{$}}
77 }
78
fail6()79 void fail6() {
80 int a = 0;
81 if (a != 0) {
82 } else if (a != 1);
83 a = 2;
84 // CHECK-MESSAGES: :[[@LINE-2]]:21: warning: potentially unintended semicolon
85 // CHECK-FIXES: } else if (a != 1){{$}}
86 }
87
fail7()88 void fail7() {
89 if (true)
90 ;
91 // CHECK-MESSAGES: :[[@LINE-1]]:5: warning: potentially unintended semicolon
92 }
93
correct6()94 void correct6()
95 {
96 do; while(false);
97 }
98
correct7()99 int correct7()
100 {
101 int t_num = 0;
102 char c = 'b';
103 char *s = "a";
104 if (s == "(" || s != "'" || c == '"') {
105 t_num += 3;
106 return (c == ')' && c == '\'');
107 }
108
109 return 0;
110 }
111
correct8()112 void correct8() {
113 if (true)
114 ;
115 else {
116 }
117 }
118