1*89a1d03eSRichard // RUN: %check_clang_tidy -std=c++17-or-later %s bugprone-suspicious-semicolon %t
2*89a1d03eSRichard 
fail()3*89a1d03eSRichard void fail()
4*89a1d03eSRichard {
5*89a1d03eSRichard   int x = 0;
6*89a1d03eSRichard   if(x > 5); (void)x;
7*89a1d03eSRichard   // CHECK-MESSAGES: :[[@LINE-1]]:12: warning: potentially unintended semicolon [bugprone-suspicious-semicolon]
8*89a1d03eSRichard   // CHECK-FIXES: if(x > 5) (void)x;
9*89a1d03eSRichard }
10*89a1d03eSRichard 
11*89a1d03eSRichard template <int X>
foo(int a)12*89a1d03eSRichard int foo(int a) {
13*89a1d03eSRichard     if constexpr(X > 0) {
14*89a1d03eSRichard         return a;
15*89a1d03eSRichard     }
16*89a1d03eSRichard     return a + 1;
17*89a1d03eSRichard }
18*89a1d03eSRichard 
19*89a1d03eSRichard template <int X>
foo2(int a)20*89a1d03eSRichard int foo2(int a) {
21*89a1d03eSRichard     // FIXME: diagnose the case below. See https://reviews.llvm.org/D46234
22*89a1d03eSRichard     // for details.
23*89a1d03eSRichard     if constexpr(X > 0);
24*89a1d03eSRichard         return a;
25*89a1d03eSRichard     return a + 1;
26*89a1d03eSRichard }
27*89a1d03eSRichard 
main(void)28*89a1d03eSRichard int main(void) {
29*89a1d03eSRichard     foo2<0>(1);
30*89a1d03eSRichard     return foo<0>(1);
31*89a1d03eSRichard }
32