189a1d03eSRichard // RUN: %check_clang_tidy %s google-runtime-int %t
289a1d03eSRichard
389a1d03eSRichard long a();
489a1d03eSRichard // CHECK-MESSAGES: [[@LINE-1]]:1: warning: consider replacing 'long' with 'int{{..}}'
589a1d03eSRichard
689a1d03eSRichard typedef unsigned long long uint64; // NOLINT
789a1d03eSRichard
889a1d03eSRichard long b(long = 1);
989a1d03eSRichard // CHECK-MESSAGES: [[@LINE-1]]:1: warning: consider replacing 'long' with 'int{{..}}'
1089a1d03eSRichard // CHECK-MESSAGES: [[@LINE-2]]:8: warning: consider replacing 'long' with 'int{{..}}'
1189a1d03eSRichard
1289a1d03eSRichard template <typename T>
tmpl()1389a1d03eSRichard void tmpl() {
1489a1d03eSRichard T i;
1589a1d03eSRichard }
1689a1d03eSRichard
bar(const short,unsigned short)1789a1d03eSRichard short bar(const short, unsigned short) {
1889a1d03eSRichard // CHECK-MESSAGES: [[@LINE-1]]:1: warning: consider replacing 'short' with 'int16'
1989a1d03eSRichard // CHECK-MESSAGES: [[@LINE-2]]:17: warning: consider replacing 'short' with 'int16'
2089a1d03eSRichard // CHECK-MESSAGES: [[@LINE-3]]:24: warning: consider replacing 'unsigned short' with 'uint16'
2189a1d03eSRichard long double foo = 42;
2289a1d03eSRichard uint64 qux = 42;
2389a1d03eSRichard unsigned short port;
2489a1d03eSRichard
2589a1d03eSRichard const unsigned short bar = 0;
2689a1d03eSRichard // CHECK-MESSAGES: [[@LINE-1]]:9: warning: consider replacing 'unsigned short' with 'uint16'
2789a1d03eSRichard long long *baar;
2889a1d03eSRichard // CHECK-MESSAGES: [[@LINE-1]]:3: warning: consider replacing 'long long' with 'int64'
2989a1d03eSRichard const unsigned short &bara = bar;
3089a1d03eSRichard // CHECK-MESSAGES: [[@LINE-1]]:9: warning: consider replacing 'unsigned short' with 'uint16'
3189a1d03eSRichard long const long moo = 1;
3289a1d03eSRichard // CHECK-MESSAGES: [[@LINE-1]]:3: warning: consider replacing 'long long' with 'int64'
3389a1d03eSRichard long volatile long wat = 42;
3489a1d03eSRichard // CHECK-MESSAGES: [[@LINE-1]]:3: warning: consider replacing 'long long' with 'int64'
3589a1d03eSRichard unsigned long y;
3689a1d03eSRichard // CHECK-MESSAGES: [[@LINE-1]]:3: warning: consider replacing 'unsigned long' with 'uint{{..}}'
3789a1d03eSRichard unsigned long long **const *tmp;
3889a1d03eSRichard // CHECK-MESSAGES: [[@LINE-1]]:3: warning: consider replacing 'unsigned long long' with 'uint64'
3989a1d03eSRichard unsigned long long **const *&z = tmp;
4089a1d03eSRichard // CHECK-MESSAGES: [[@LINE-1]]:3: warning: consider replacing 'unsigned long long' with 'uint64'
4189a1d03eSRichard unsigned short porthole;
4289a1d03eSRichard // CHECK-MESSAGES: [[@LINE-1]]:3: warning: consider replacing 'unsigned short' with 'uint16'
4389a1d03eSRichard
4489a1d03eSRichard uint64 cast = (short)42;
4589a1d03eSRichard // CHECK-MESSAGES: [[@LINE-1]]:18: warning: consider replacing 'short' with 'int16'
4689a1d03eSRichard
4789a1d03eSRichard #define l long
4889a1d03eSRichard l x;
4989a1d03eSRichard
5089a1d03eSRichard tmpl<short>();
5189a1d03eSRichard // CHECK-MESSAGES: [[@LINE-1]]:8: warning: consider replacing 'short' with 'int16'
5289a1d03eSRichard return 0;
5389a1d03eSRichard }
5489a1d03eSRichard
5589a1d03eSRichard void p(unsigned short port);
5689a1d03eSRichard
qux()5789a1d03eSRichard void qux() {
5889a1d03eSRichard short port;
5989a1d03eSRichard // CHECK-MESSAGES: [[@LINE-1]]:3: warning: consider replacing 'short' with 'int16'
6089a1d03eSRichard }
6189a1d03eSRichard
6289a1d03eSRichard struct some_value {};
operator ""_some_literal(unsigned long long int i)63*ee0b4d96SFélix-Antoine Constantin constexpr some_value operator"" _some_literal(unsigned long long int i)
64*ee0b4d96SFélix-Antoine Constantin {
65*ee0b4d96SFélix-Antoine Constantin short j;
66*ee0b4d96SFélix-Antoine Constantin // CHECK-MESSAGES: [[@LINE-1]]:3: warning: consider replacing 'short' with 'int16'
67*ee0b4d96SFélix-Antoine Constantin return some_value();
68*ee0b4d96SFélix-Antoine Constantin }
6989a1d03eSRichard
7089a1d03eSRichard struct A { A& operator=(const A&); };
7189a1d03eSRichard class B { A a[0]; };
7289a1d03eSRichard
fff()7389a1d03eSRichard void fff() {
7489a1d03eSRichard B a, b;
7589a1d03eSRichard a = b;
7689a1d03eSRichard }
7789a1d03eSRichard
7889a1d03eSRichard __attribute__((__format__ (__printf__, 1, 2)))
7989a1d03eSRichard void myprintf(const char* s, ...);
8089a1d03eSRichard
doprint_no_warning()8189a1d03eSRichard void doprint_no_warning() {
8289a1d03eSRichard uint64 foo = 23;
8389a1d03eSRichard myprintf("foo %lu %lu", (unsigned long)42, (unsigned long)foo);
8489a1d03eSRichard }
8589a1d03eSRichard
8689a1d03eSRichard void myprintf_no_attribute(const char* s, ...);
8789a1d03eSRichard
doprint_warning()8889a1d03eSRichard void doprint_warning() {
8989a1d03eSRichard uint64 foo = 23;
9089a1d03eSRichard myprintf_no_attribute("foo %lu %lu", (unsigned long)42, (unsigned long)foo);
9189a1d03eSRichard // CHECK-MESSAGES: [[@LINE-1]]:41: warning: consider replacing 'unsigned long'
9289a1d03eSRichard // CHECK-MESSAGES: [[@LINE-2]]:60: warning: consider replacing 'unsigned long'
9389a1d03eSRichard }
94