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