blob: f936fb060468b65863cfb212ac86358ff58b1dfb [file] [log] [blame]
// RUN: %check_clang_tidy %s zircon-fbl-move %t
// CHECK-FIXES: #include <utility>
namespace fbl {
template <typename T>
struct remove_reference {
using type = T;
};
template <typename T>
struct remove_reference<T&> {
using type = T;
};
template <typename T>
struct remove_reference<T&&> {
using type = T;
};
template <typename T>
typename remove_reference<T>::type&& move(T&& t) {
return static_cast<typename remove_reference<T>::type&&>(t);
}
template <typename T>
T&& forward(typename remove_reference<T>::type& t) {
return static_cast<T&&>(t);
}
template <typename T>
T&& forward(typename remove_reference<T>::type&& t) {
return static_cast<T&&>(t);
}
} // namespace fbl
namespace std {
template <class _Tp> struct remove_reference {typedef _Tp type;};
template <class _Tp> struct remove_reference<_Tp&> {typedef _Tp type;};
template <class T> T&& forward(typename remove_reference<T>::type& t) {}
template <class T> T&& forward(typename remove_reference<T>::type&& t) {}
template <class T> typename remove_reference<T>::type&& move(T&&) {}
} // namespace std
#define MOVE(i) fbl::move(i); fbl::forward<int>(i);
// CHECK-NOTES: [[@LINE-1]]:17: warning: fbl::move is deprecated, use std::move instead
// CHECK-NOTES: [[@LINE-2]]:31: warning: fbl::forward is deprecated, use std::forward instead
// CHECK-FIXES: #define MOVE(i) std::move(i); std::forward<int>(i);
int main() {
int i = 0;
fbl::move(i);
// CHECK-NOTES: [[@LINE-1]]:3: warning: fbl::move is deprecated, use std::move instead
// CHECK-FIXES: std::move(i)
fbl::forward<int>(i);
// CHECK-NOTES: [[@LINE-1]]:3: warning: fbl::forward is deprecated, use std::forward instead
// CHECK-FIXES: std::forward<int>(i)
int j = 0;
std::move(j);
std::forward<int>(j);
int k = 0;
MOVE(k);
}