[lld][WebAssembly] Reinstate mistakenly disabled test. NFC
[llvm-project.git] / clang / test / SemaCXX / warn-self-move.cpp
blob23778c1871132522bdc0e5e00598ab90b7896d21
1 // RUN: %clang_cc1 -fsyntax-only -Wself-move -std=c++11 -verify %s
3 // definitions for std::move
4 namespace std {
5 inline namespace foo {
6 template <class T> struct remove_reference { typedef T type; };
7 template <class T> struct remove_reference<T&> { typedef T type; };
8 template <class T> struct remove_reference<T&&> { typedef T type; };
10 template <class T> typename remove_reference<T>::type &&move(T &&t);
14 void int_test() {
15 int x = 5;
16 x = std::move(x); // expected-warning{{explicitly moving}}
17 (x) = std::move(x); // expected-warning{{explicitly moving}}
19 using std::move;
20 x = move(x); // expected-warning{{explicitly moving}}
23 int global;
24 void global_int_test() {
25 global = std::move(global); // expected-warning{{explicitly moving}}
26 (global) = std::move(global); // expected-warning{{explicitly moving}}
28 using std::move;
29 global = move(global); // expected-warning{{explicitly moving}}
32 class field_test {
33 int x;
34 field_test(field_test&& other) {
35 x = std::move(x); // expected-warning{{explicitly moving}}
36 x = std::move(other.x);
37 other.x = std::move(x);
38 other.x = std::move(other.x); // expected-warning{{explicitly moving}}
42 struct A {};
43 struct B { A a; };
44 struct C { C() {}; ~C() {} };
45 void struct_test() {
46 A a;
47 a = std::move(a); // expected-warning{{explicitly moving}}
49 B b;
50 b = std::move(b); // expected-warning{{explicitly moving}}
51 b.a = std::move(b.a); // expected-warning{{explicitly moving}}
53 C c;
54 c = std::move(c); // expected-warning{{explicitly moving}}