130 lines · cpp
1// RUN: %check_clang_tidy -std=c++17 %s modernize-use-integer-sign-comparison %t -- \2// RUN: -config="{CheckOptions: {modernize-use-integer-sign-comparison.EnableQtSupport: true}}"3 4// CHECK-FIXES: #include <QtCore/q20utility.h>5 6// The code that triggers the check7#define MAX_MACRO(a, b) (a < b) ? b : a8 9unsigned int FuncParameters(int bla) {10 unsigned int result = 0;11 if (result == bla)12 return 0;13// CHECK-MESSAGES: :[[@LINE-2]]:9: warning: comparison between 'signed' and 'unsigned' integers [modernize-use-integer-sign-comparison]14// CHECK-FIXES: if (q20::cmp_equal(result , bla))15 16 return 1;17}18 19template <typename T>20void TemplateFuncParameter(T val) {21 unsigned long uL = 0;22 if (val >= uL)23 return;24// CHECK-MESSAGES-NOT: warning:25}26 27template <typename T1, typename T2>28int TemplateFuncParameters(T1 val1, T2 val2) {29 if (val1 >= val2)30 return 0;31// CHECK-MESSAGES-NOT: warning:32 return 1;33}34 35int AllComparisons() {36 unsigned int uVar = 42;37 unsigned short uArray[7] = {0, 1, 2, 3, 9, 7, 9};38 39 int sVar = -42;40 short sArray[7] = {-1, -2, -8, -94, -5, -4, -6};41 42 enum INT_TEST {43 VAL1 = 0,44 VAL2 = -145 };46 47 char ch = 'a';48 unsigned char uCh = 'a';49 signed char sCh = 'a';50 bool bln = false;51 52 if (bln == sVar)53 return 0;54// CHECK-MESSAGES-NOT: warning:55 56 if (ch > uCh)57 return 0;58// CHECK-MESSAGES-NOT: warning:59 60 if (sVar <= INT_TEST::VAL2)61 return 0;62// CHECK-MESSAGES-NOT: warning:63 64 if (uCh < sCh)65 return -1;66// CHECK-MESSAGES: :[[@LINE-2]]:9: warning: comparison between 'signed' and 'unsigned' integers [modernize-use-integer-sign-comparison]67// CHECK-FIXES: if (q20::cmp_less(uCh , sCh))68 69 if ((int)uVar < sVar)70 return 0;71// CHECK-MESSAGES: :[[@LINE-2]]:9: warning: comparison between 'signed' and 'unsigned' integers [modernize-use-integer-sign-comparison]72// CHECK-FIXES: if (q20::cmp_less(uVar, sVar))73 74 (uVar != sVar) ? uVar = sVar75 : sVar = uVar;76// CHECK-MESSAGES: :[[@LINE-2]]:6: warning: comparison between 'signed' and 'unsigned' integers [modernize-use-integer-sign-comparison]77// CHECK-FIXES: (q20::cmp_not_equal(uVar , sVar)) ? uVar = sVar78 79 while (uArray[0] <= sArray[0])80 return 0;81// CHECK-MESSAGES: :[[@LINE-2]]:12: warning: comparison between 'signed' and 'unsigned' integers [modernize-use-integer-sign-comparison]82// CHECK-FIXES: while (q20::cmp_less_equal(uArray[0] , sArray[0]))83 84 if (uArray[1] > sArray[1])85 return 0;86// CHECK-MESSAGES: :[[@LINE-2]]:9: warning: comparison between 'signed' and 'unsigned' integers [modernize-use-integer-sign-comparison]87// CHECK-FIXES: if (q20::cmp_greater(uArray[1] , sArray[1]))88 89 MAX_MACRO(uVar, sArray[0]);90// CHECK-MESSAGES: :[[@LINE-1]]:15: warning: comparison between 'signed' and 'unsigned' integers [modernize-use-integer-sign-comparison]91 92 if (static_cast<unsigned int>(uArray[2]) < static_cast<int>(sArray[2]))93 return 0;94// CHECK-MESSAGES: :[[@LINE-2]]:9: warning: comparison between 'signed' and 'unsigned' integers [modernize-use-integer-sign-comparison]95// CHECK-FIXES: if (q20::cmp_less(uArray[2],sArray[2]))96 97 if ((unsigned int)uArray[3] < (int)sArray[3])98 return 0;99// CHECK-MESSAGES: :[[@LINE-2]]:9: warning: comparison between 'signed' and 'unsigned' integers [modernize-use-integer-sign-comparison]100// CHECK-FIXES: if (q20::cmp_less(uArray[3],sArray[3]))101 102 if ((unsigned int)(uArray[4]) < (int)(sArray[4]))103 return 0;104// CHECK-MESSAGES: :[[@LINE-2]]:9: warning: comparison between 'signed' and 'unsigned' integers [modernize-use-integer-sign-comparison]105// CHECK-FIXES: if (q20::cmp_less((uArray[4]),(sArray[4])))106 107 if (uArray[5] > sArray[5])108 return 0;109// CHECK-MESSAGES: :[[@LINE-2]]:9: warning: comparison between 'signed' and 'unsigned' integers [modernize-use-integer-sign-comparison]110// CHECK-FIXES: if (q20::cmp_greater(uArray[5] , sArray[5]))111 112 #define VALUE sArray[6]113 if (uArray[6] > VALUE)114 return 0;115// CHECK-MESSAGES: :[[@LINE-2]]:9: warning: comparison between 'signed' and 'unsigned' integers [modernize-use-integer-sign-comparison]116// CHECK-FIXES: if (q20::cmp_greater(uArray[6] , VALUE))117 118 if (unsigned(uArray[7]) >= int(sArray[7]))119 return 0;120// CHECK-MESSAGES: :[[@LINE-2]]:9: warning: comparison between 'signed' and 'unsigned' integers [modernize-use-integer-sign-comparison]121// CHECK-FIXES: if (q20::cmp_greater_equal(uArray[7],sArray[7]))122 123 124 FuncParameters(uVar);125 TemplateFuncParameter(sVar);126 TemplateFuncParameters(uVar, sVar);127 128 return 0;129}130