1*e8a3ddafSNathan James // RUN: %check_clang_tidy %s android-comparison-in-temp-failure-retry %t -- -config="{CheckOptions: {android-comparison-in-temp-failure-retry.RetryMacros: 'MY_TEMP_FAILURE_RETRY,MY_OTHER_TEMP_FAILURE_RETRY'}}" 289a1d03eSRichard 389a1d03eSRichard #define MY_TEMP_FAILURE_RETRY(x) \ 489a1d03eSRichard ({ \ 589a1d03eSRichard typeof(x) __z; \ 689a1d03eSRichard do \ 789a1d03eSRichard __z = (x); \ 889a1d03eSRichard while (__z == -1); \ 989a1d03eSRichard __z; \ 1089a1d03eSRichard }) 1189a1d03eSRichard 1289a1d03eSRichard #define MY_OTHER_TEMP_FAILURE_RETRY(x) \ 1389a1d03eSRichard ({ \ 1489a1d03eSRichard typeof(x) __z; \ 1589a1d03eSRichard do \ 1689a1d03eSRichard __z = (x); \ 1789a1d03eSRichard while (__z == -1); \ 1889a1d03eSRichard __z; \ 1989a1d03eSRichard }) 2089a1d03eSRichard 2189a1d03eSRichard int foo(void); 2289a1d03eSRichard int bar(int a); 2389a1d03eSRichard with_custom_macro(void)2489a1d03eSRichardvoid with_custom_macro(void) { 2589a1d03eSRichard MY_TEMP_FAILURE_RETRY(foo()); 2689a1d03eSRichard MY_TEMP_FAILURE_RETRY(foo() == 1); 2789a1d03eSRichard // CHECK-MESSAGES: :[[@LINE-1]]:31: warning: top-level comparison in MY_TEMP_FAILURE_RETRY 2889a1d03eSRichard MY_TEMP_FAILURE_RETRY((foo())); 2989a1d03eSRichard MY_TEMP_FAILURE_RETRY((int)(foo() == 1)); 3089a1d03eSRichard // CHECK-MESSAGES: :[[@LINE-1]]:37: warning: top-level comparison in MY_TEMP_FAILURE_RETRY 3189a1d03eSRichard MY_TEMP_FAILURE_RETRY((bar(foo() == 1))); 3289a1d03eSRichard MY_TEMP_FAILURE_RETRY((int)((bar(foo() == 1)) == 1)); 3389a1d03eSRichard // CHECK-MESSAGES: :[[@LINE-1]]:49: warning: top-level comparison in MY_TEMP_FAILURE_RETRY 3489a1d03eSRichard } 3589a1d03eSRichard with_other_custom_macro(void)3689a1d03eSRichardvoid with_other_custom_macro(void) { 3789a1d03eSRichard MY_OTHER_TEMP_FAILURE_RETRY(foo()); 3889a1d03eSRichard MY_OTHER_TEMP_FAILURE_RETRY(foo() == 1); 3989a1d03eSRichard // CHECK-MESSAGES: :[[@LINE-1]]:37: warning: top-level comparison in MY_OTHER_TEMP_FAILURE_RETRY 4089a1d03eSRichard MY_OTHER_TEMP_FAILURE_RETRY((foo())); 4189a1d03eSRichard MY_OTHER_TEMP_FAILURE_RETRY((int)(foo() == 1)); 4289a1d03eSRichard // CHECK-MESSAGES: :[[@LINE-1]]:43: warning: top-level comparison in MY_OTHER_TEMP_FAILURE_RETRY 4389a1d03eSRichard MY_OTHER_TEMP_FAILURE_RETRY((bar(foo() == 1))); 4489a1d03eSRichard MY_OTHER_TEMP_FAILURE_RETRY((int)((bar(foo() == 1)) == 1)); 4589a1d03eSRichard // CHECK-MESSAGES: :[[@LINE-1]]:55: warning: top-level comparison in MY_OTHER_TEMP_FAILURE_RETRY 4689a1d03eSRichard } 47