// RUN: $(dirname %s)/check_clang_tidy_fix.sh %s google-build-explicit-make-pair %t
// REQUIRES: shell

namespace std {
template <class T1, class T2>
struct pair {
  pair(T1 x, T2 y) {}
};

template <class T1, class T2>
pair<T1, T2> make_pair(T1 x, T2 y) {
  return pair<T1, T2>(x, y);
}
}

template <typename T>
void templ(T a, T b) {
  std::make_pair<T, unsigned>(a, b);
  std::make_pair<int, int>(1, 2);
// CHECK-MESSAGES: :[[@LINE-1]]:3: warning: for C++11-compatibility, omit template arguments from make_pair
// CHECK-FIXES: std::make_pair(1, 2)
}

void test(int i) {
  std::make_pair<int, int>(i, i);
// CHECK-MESSAGES: :[[@LINE-1]]:3: warning: for C++11-compatibility, omit template arguments from make_pair
// CHECK-FIXES: std::make_pair(i, i)

  std::make_pair<unsigned, int>(i, i);
// CHECK-MESSAGES: :[[@LINE-1]]:3: warning: for C++11-compatibility, use pair directly
// CHECK-FIXES: std::pair<unsigned, int>(i, i)

  std::make_pair<int, unsigned>(i, i);
// CHECK-MESSAGES: :[[@LINE-1]]:3: warning: for C++11-compatibility, use pair directly
// CHECK-FIXES: std::pair<int, unsigned>(i, i)

#define M std::make_pair<int, unsigned>(i, i);
M
// CHECK-MESSAGES: :[[@LINE-1]]:1: warning: for C++11-compatibility, use pair directly
// Can't fix in macros.
// CHECK-FIXES: #define M std::make_pair<int, unsigned>(i, i);
// CHECK-FIXES-NEXT: M

  templ(i, i);
  templ(1U, 2U);

  std::make_pair(i, 1); // no-warning
}
