1*89a1d03eSRichard // RUN: %check_clang_tidy %s bugprone-terminating-continue %t 2*89a1d03eSRichard f()3*89a1d03eSRichardvoid f() { 4*89a1d03eSRichard do { 5*89a1d03eSRichard continue; 6*89a1d03eSRichard // CHECK-MESSAGES: :[[@LINE-1]]:5: warning: 'continue' in loop with false condition is equivalent to 'break' [bugprone-terminating-continue] 7*89a1d03eSRichard // CHECK-FIXES: break; 8*89a1d03eSRichard } while(false); 9*89a1d03eSRichard 10*89a1d03eSRichard do { 11*89a1d03eSRichard continue; 12*89a1d03eSRichard // CHECK-MESSAGES: :[[@LINE-1]]:5: warning: 'continue' in loop with false condition is equivalent to 'break' [bugprone-terminating-continue] 13*89a1d03eSRichard // CHECK-FIXES: break; 14*89a1d03eSRichard } while(0); 15*89a1d03eSRichard 16*89a1d03eSRichard do { 17*89a1d03eSRichard continue; 18*89a1d03eSRichard // CHECK-MESSAGES: :[[@LINE-1]]:5: warning: 'continue' in loop with false condition is equivalent to 'break' [bugprone-terminating-continue] 19*89a1d03eSRichard // CHECK-FIXES: break; 20*89a1d03eSRichard } while(nullptr); 21*89a1d03eSRichard 22*89a1d03eSRichard do { 23*89a1d03eSRichard continue; 24*89a1d03eSRichard // CHECK-MESSAGES: :[[@LINE-1]]:5: warning: 'continue' in loop with false condition is equivalent to 'break' [bugprone-terminating-continue] 25*89a1d03eSRichard // CHECK-FIXES: break; 26*89a1d03eSRichard } while(__null); 27*89a1d03eSRichard 28*89a1d03eSRichard 29*89a1d03eSRichard do { 30*89a1d03eSRichard int x = 1; 31*89a1d03eSRichard if (x > 0) continue; 32*89a1d03eSRichard // CHECK-MESSAGES: :[[@LINE-1]]:16: warning: 'continue' in loop with false condition is equivalent to 'break' [bugprone-terminating-continue] 33*89a1d03eSRichard // CHECK-FIXES: if (x > 0) break; 34*89a1d03eSRichard } while (false); 35*89a1d03eSRichard 36*89a1d03eSRichard switch (2) { 37*89a1d03eSRichard case 2: 38*89a1d03eSRichard do { 39*89a1d03eSRichard continue; // LoopInSwitch 40*89a1d03eSRichard // CHECK-MESSAGES: :[[@LINE-1]]:7: warning: 'continue' in loop with false condition is equivalent to 'break' [bugprone-terminating-continue] 41*89a1d03eSRichard // CHECK-FIXES: break; // LoopInSwitch 42*89a1d03eSRichard } while (0); 43*89a1d03eSRichard } 44*89a1d03eSRichard } 45*89a1d03eSRichard g()46*89a1d03eSRichardvoid g() { 47*89a1d03eSRichard do { 48*89a1d03eSRichard do { 49*89a1d03eSRichard continue; 50*89a1d03eSRichard int x = 1; 51*89a1d03eSRichard } while (1 == 1); 52*89a1d03eSRichard } while (false); 53*89a1d03eSRichard 54*89a1d03eSRichard do { 55*89a1d03eSRichard for (int i = 0; i < 1; ++i) { 56*89a1d03eSRichard continue; 57*89a1d03eSRichard int x = 1; 58*89a1d03eSRichard } 59*89a1d03eSRichard } while (false); 60*89a1d03eSRichard 61*89a1d03eSRichard do { 62*89a1d03eSRichard while (true) { 63*89a1d03eSRichard continue; 64*89a1d03eSRichard int x = 1; 65*89a1d03eSRichard } 66*89a1d03eSRichard } while (false); 67*89a1d03eSRichard 68*89a1d03eSRichard int v[] = {1,2,3,34}; 69*89a1d03eSRichard do { 70*89a1d03eSRichard for (int n : v) { 71*89a1d03eSRichard if (n>2) continue; 72*89a1d03eSRichard } 73*89a1d03eSRichard } while (false); 74*89a1d03eSRichard 75*89a1d03eSRichard do { 76*89a1d03eSRichard switch (2) { 77*89a1d03eSRichard case 1: 78*89a1d03eSRichard case 2: 79*89a1d03eSRichard continue; 80*89a1d03eSRichard } 81*89a1d03eSRichard } while (false); 82*89a1d03eSRichard } 83