11ae33bf4SCarlos Galvez // RUN: %check_clang_tidy -check-suffixes=DEFAULT %s cppcoreguidelines-avoid-do-while %t 2*1af159e9SPiotr Zegar // RUN: %check_clang_tidy -check-suffixes=IGNORE-MACROS %s cppcoreguidelines-avoid-do-while %t -- -config='{CheckOptions: {cppcoreguidelines-avoid-do-while.IgnoreMacros: true}}' 31ae33bf4SCarlos Galvez 41ae33bf4SCarlos Galvez #define FOO(x) \ 51ae33bf4SCarlos Galvez do { \ 61ae33bf4SCarlos Galvez } while (x != 0) 71ae33bf4SCarlos Galvez 81ae33bf4SCarlos Galvez #define BAR_0(x) \ 91ae33bf4SCarlos Galvez do { \ 101ae33bf4SCarlos Galvez bar(x); \ 111ae33bf4SCarlos Galvez } while (0) 121ae33bf4SCarlos Galvez 131ae33bf4SCarlos Galvez #define BAR_FALSE(x) \ 141ae33bf4SCarlos Galvez do { \ 151ae33bf4SCarlos Galvez bar(x); \ 161ae33bf4SCarlos Galvez } while (false) 171ae33bf4SCarlos Galvez 181ae33bf4SCarlos Galvez void bar(int); 191ae33bf4SCarlos Galvez int baz(); 201ae33bf4SCarlos Galvez foo()211ae33bf4SCarlos Galvezvoid foo() 221ae33bf4SCarlos Galvez { 231ae33bf4SCarlos Galvez // CHECK-MESSAGES-IGNORE-MACROS: :[[@LINE+2]]:5: warning: avoid do-while loops [cppcoreguidelines-avoid-do-while] 241ae33bf4SCarlos Galvez // CHECK-MESSAGES-DEFAULT: :[[@LINE+1]]:5: warning: avoid do-while loops [cppcoreguidelines-avoid-do-while] 251ae33bf4SCarlos Galvez do { 261ae33bf4SCarlos Galvez 271ae33bf4SCarlos Galvez } while(0); 281ae33bf4SCarlos Galvez 291ae33bf4SCarlos Galvez // CHECK-MESSAGES-IGNORE-MACROS: :[[@LINE+2]]:5: warning: avoid do-while loops 301ae33bf4SCarlos Galvez // CHECK-MESSAGES-DEFAULT: :[[@LINE+1]]:5: warning: avoid do-while loops 311ae33bf4SCarlos Galvez do { 321ae33bf4SCarlos Galvez 331ae33bf4SCarlos Galvez } while(1); 341ae33bf4SCarlos Galvez 351ae33bf4SCarlos Galvez // CHECK-MESSAGES-IGNORE-MACROS: :[[@LINE+2]]:5: warning: avoid do-while loops 361ae33bf4SCarlos Galvez // CHECK-MESSAGES-DEFAULT: :[[@LINE+1]]:5: warning: avoid do-while loops 371ae33bf4SCarlos Galvez do { 381ae33bf4SCarlos Galvez 391ae33bf4SCarlos Galvez } while(-1); 401ae33bf4SCarlos Galvez 411ae33bf4SCarlos Galvez // CHECK-MESSAGES-IGNORE-MACROS: :[[@LINE+2]]:5: warning: avoid do-while loops 421ae33bf4SCarlos Galvez // CHECK-MESSAGES-DEFAULT: :[[@LINE+1]]:5: warning: avoid do-while loops 431ae33bf4SCarlos Galvez do { 441ae33bf4SCarlos Galvez 451ae33bf4SCarlos Galvez } while(false); 461ae33bf4SCarlos Galvez 471ae33bf4SCarlos Galvez // CHECK-MESSAGES-IGNORE-MACROS: :[[@LINE+2]]:5: warning: avoid do-while loops 481ae33bf4SCarlos Galvez // CHECK-MESSAGES-DEFAULT: :[[@LINE+1]]:5: warning: avoid do-while loops 491ae33bf4SCarlos Galvez do { 501ae33bf4SCarlos Galvez 511ae33bf4SCarlos Galvez } while(true); 521ae33bf4SCarlos Galvez 531ae33bf4SCarlos Galvez // CHECK-MESSAGES-IGNORE-MACROS: :[[@LINE+3]]:5: warning: avoid do-while loops 541ae33bf4SCarlos Galvez // CHECK-MESSAGES-DEFAULT: :[[@LINE+2]]:5: warning: avoid do-while loops 551ae33bf4SCarlos Galvez int x1{0}; 561ae33bf4SCarlos Galvez do { 571ae33bf4SCarlos Galvez x1 = baz(); 581ae33bf4SCarlos Galvez } while (x1 > 0); 591ae33bf4SCarlos Galvez 601ae33bf4SCarlos Galvez // CHECK-MESSAGES-IGNORE-MACROS: :[[@LINE+2]]:5: warning: avoid do-while loops 611ae33bf4SCarlos Galvez // CHECK-MESSAGES-DEFAULT: :[[@LINE+1]]:5: warning: avoid do-while loops 621ae33bf4SCarlos Galvez do { 631ae33bf4SCarlos Galvez 641ae33bf4SCarlos Galvez } while (x1 != 0); 651ae33bf4SCarlos Galvez 661ae33bf4SCarlos Galvez // CHECK-MESSAGES-IGNORE-MACROS: :[[@LINE+3]]:5: warning: avoid do-while loops 671ae33bf4SCarlos Galvez // CHECK-MESSAGES-DEFAULT: :[[@LINE+2]]:5: warning: avoid do-while loops 681ae33bf4SCarlos Galvez constexpr int x2{0}; 691ae33bf4SCarlos Galvez do { 701ae33bf4SCarlos Galvez 711ae33bf4SCarlos Galvez } while (x2); 721ae33bf4SCarlos Galvez 731ae33bf4SCarlos Galvez // CHECK-MESSAGES-IGNORE-MACROS: :[[@LINE+3]]:5: warning: avoid do-while loops 741ae33bf4SCarlos Galvez // CHECK-MESSAGES-DEFAULT: :[[@LINE+2]]:5: warning: avoid do-while loops 751ae33bf4SCarlos Galvez constexpr bool x3{false}; 761ae33bf4SCarlos Galvez do { 771ae33bf4SCarlos Galvez 781ae33bf4SCarlos Galvez } while (x3); 791ae33bf4SCarlos Galvez 801ae33bf4SCarlos Galvez // CHECK-MESSAGES-DEFAULT: :[[@LINE+1]]:5: warning: avoid do-while loops 811ae33bf4SCarlos Galvez FOO(x1); 821ae33bf4SCarlos Galvez 831ae33bf4SCarlos Galvez // CHECK-MESSAGES-DEFAULT: :[[@LINE+1]]:5: warning: avoid do-while loops 841ae33bf4SCarlos Galvez BAR_0(x1); 851ae33bf4SCarlos Galvez 861ae33bf4SCarlos Galvez // CHECK-MESSAGES-DEFAULT: :[[@LINE+1]]:5: warning: avoid do-while loops 871ae33bf4SCarlos Galvez BAR_FALSE(x1); 881ae33bf4SCarlos Galvez } 89