// RUN: %clang_cc1 -fsyntax-only -Wself-move -std=c++11 -verify %s

// definitions for std::move
namespace std {
inline namespace foo {
template <class T> struct remove_reference { typedef T type; };
template <class T> struct remove_reference<T&> { typedef T type; };
template <class T> struct remove_reference<T&&> { typedef T type; };

template <class T> typename remove_reference<T>::type &&move(T &&t);
}
}

void int_test() {
  int x = 5;
  x = std::move(x);  // expected-warning{{explicitly moving}}
  (x) = std::move(x);  // expected-warning{{explicitly moving}}

  using std::move;
  x = move(x);  // expected-warning{{explicitly moving}}
}

int global;
void global_int_test() {
  global = std::move(global);  // expected-warning{{explicitly moving}}
  (global) = std::move(global);  // expected-warning{{explicitly moving}}

  using std::move;
  global = move(global);  // expected-warning{{explicitly moving}}
}

class field_test {
  int x;
  field_test(field_test&& other) {
    x = std::move(x);  // expected-warning{{explicitly moving}}
    x = std::move(other.x);
    other.x = std::move(x);
    other.x = std::move(other.x);  // expected-warning{{explicitly moving}}
  }
};

struct A {};
struct B { A a; };
struct C { C() {}; ~C() {} };
void struct_test() {
  A a;
  a = std::move(a);  // expected-warning{{explicitly moving}}

  B b;
  b = std::move(b);  // expected-warning{{explicitly moving}}
  b.a = std::move(b.a);  // expected-warning{{explicitly moving}}

  C c;
  c = std::move(c);  // expected-warning{{explicitly moving}}
}
