// RUN: %check_clang_tidy %s google-runtime-int %t long a(); // CHECK-MESSAGES: [[@LINE-1]]:1: warning: consider replacing 'long' with 'int{{..}}' typedef unsigned long long uint64; // NOLINT long b(long = 1); // CHECK-MESSAGES: [[@LINE-1]]:1: warning: consider replacing 'long' with 'int{{..}}' // CHECK-MESSAGES: [[@LINE-2]]:8: warning: consider replacing 'long' with 'int{{..}}' template void tmpl() { T i; } short bar(const short, unsigned short) { // CHECK-MESSAGES: [[@LINE-1]]:1: warning: consider replacing 'short' with 'int16' // CHECK-MESSAGES: [[@LINE-2]]:17: warning: consider replacing 'short' with 'int16' // CHECK-MESSAGES: [[@LINE-3]]:24: warning: consider replacing 'unsigned short' with 'uint16' long double foo = 42; uint64 qux = 42; unsigned short port; const unsigned short bar = 0; // CHECK-MESSAGES: [[@LINE-1]]:9: warning: consider replacing 'unsigned short' with 'uint16' long long *baar; // CHECK-MESSAGES: [[@LINE-1]]:3: warning: consider replacing 'long long' with 'int64' const unsigned short &bara = bar; // CHECK-MESSAGES: [[@LINE-1]]:9: warning: consider replacing 'unsigned short' with 'uint16' long const long moo = 1; // CHECK-MESSAGES: [[@LINE-1]]:3: warning: consider replacing 'long long' with 'int64' long volatile long wat = 42; // CHECK-MESSAGES: [[@LINE-1]]:3: warning: consider replacing 'long long' with 'int64' unsigned long y; // CHECK-MESSAGES: [[@LINE-1]]:3: warning: consider replacing 'unsigned long' with 'uint{{..}}' unsigned long long **const *tmp; // CHECK-MESSAGES: [[@LINE-1]]:3: warning: consider replacing 'unsigned long long' with 'uint64' unsigned long long **const *&z = tmp; // CHECK-MESSAGES: [[@LINE-1]]:3: warning: consider replacing 'unsigned long long' with 'uint64' unsigned short porthole; // CHECK-MESSAGES: [[@LINE-1]]:3: warning: consider replacing 'unsigned short' with 'uint16' uint64 cast = (short)42; // CHECK-MESSAGES: [[@LINE-1]]:18: warning: consider replacing 'short' with 'int16' #define l long l x; tmpl(); // CHECK-MESSAGES: [[@LINE-1]]:8: warning: consider replacing 'short' with 'int16' return 0; } void p(unsigned short port); void qux() { short port; // CHECK-MESSAGES: [[@LINE-1]]:3: warning: consider replacing 'short' with 'int16' } // FIXME: This shouldn't warn, as UD-literal operators require one of a handful // of types as an argument. struct some_value {}; constexpr some_value operator"" _some_literal(unsigned long long int i); // CHECK-MESSAGES: [[@LINE-1]]:47: warning: consider replacing 'unsigned long long' struct A { A& operator=(const A&); }; class B { A a[0]; }; void fff() { B a, b; a = b; } __attribute__((__format__ (__printf__, 1, 2))) void myprintf(const char* s, ...); void doprint_no_warning() { uint64 foo = 23; myprintf("foo %lu %lu", (unsigned long)42, (unsigned long)foo); } void myprintf_no_attribute(const char* s, ...); void doprint_warning() { uint64 foo = 23; myprintf_no_attribute("foo %lu %lu", (unsigned long)42, (unsigned long)foo); // CHECK-MESSAGES: [[@LINE-1]]:41: warning: consider replacing 'unsigned long' // CHECK-MESSAGES: [[@LINE-2]]:60: warning: consider replacing 'unsigned long' }