diff options
Diffstat (limited to 'test/CXX/class.derived')
-rw-r--r-- | test/CXX/class.derived/class.abstract/p16.cpp | 4 | ||||
-rw-r--r-- | test/CXX/class.derived/class.member.lookup/p7.cpp | 11 | ||||
-rw-r--r-- | test/CXX/class.derived/class.virtual/p3-0x.cpp | 20 |
3 files changed, 33 insertions, 2 deletions
diff --git a/test/CXX/class.derived/class.abstract/p16.cpp b/test/CXX/class.derived/class.abstract/p16.cpp index c237ed9..2053218 100644 --- a/test/CXX/class.derived/class.abstract/p16.cpp +++ b/test/CXX/class.derived/class.abstract/p16.cpp @@ -22,7 +22,7 @@ struct H; struct D { virtual E &operator=(const E &); // expected-note {{here}} virtual F &operator=(const F &); - virtual G &operator=(G&&); + virtual G &operator=(G&&); // expected-note {{here}} virtual H &operator=(H&&); // expected-note {{here}} friend struct F; @@ -34,8 +34,8 @@ private: struct E : D {}; // expected-error {{deleted function '~E' cannot override a non-deleted function}} \ // expected-error {{deleted function 'operator=' cannot override a non-deleted function}} struct F : D {}; -// No move ctor here, because it would be deleted. struct G : D {}; // expected-error {{deleted function '~G' cannot override a non-deleted function}} + // expected-error@-1 {{deleted function 'operator=' cannot override a non-deleted function}} struct H : D { H &operator=(H&&) = default; // expected-error {{deleted function 'operator=' cannot override a non-deleted function}} ~H(); diff --git a/test/CXX/class.derived/class.member.lookup/p7.cpp b/test/CXX/class.derived/class.member.lookup/p7.cpp new file mode 100644 index 0000000..a785e0f --- /dev/null +++ b/test/CXX/class.derived/class.member.lookup/p7.cpp @@ -0,0 +1,11 @@ +// RUN: %clang_cc1 -verify %s + +// expected-no-diagnostics + +struct A { int n; }; +struct B { float n; }; +struct C : A, B {}; +struct D : virtual C {}; +struct E : virtual C { char n; }; +struct F : D, E {} f; +char &k = f.n; diff --git a/test/CXX/class.derived/class.virtual/p3-0x.cpp b/test/CXX/class.derived/class.virtual/p3-0x.cpp index 6a02a86..41a5954 100644 --- a/test/CXX/class.derived/class.virtual/p3-0x.cpp +++ b/test/CXX/class.derived/class.virtual/p3-0x.cpp @@ -130,3 +130,23 @@ namespace MemberOfUnknownSpecialization { // expected-note@+1 {{in instantiation of}} A<double>::C c3; } + +namespace DiagnosticsQOI { + struct X { + virtual ~X(); + virtual void foo(int x); // expected-note {{hidden overloaded virtual function}} + virtual void bar(int x); // expected-note 2 {{hidden overloaded virtual function}} + virtual void bar(float x); // expected-note 2 {{hidden overloaded virtual function}} + }; + + struct Y : X { + void foo(int x, int y) override; // expected-error {{non-virtual member function marked 'override' hides virtual member function}} + void bar(double) override; // expected-error {{non-virtual member function marked 'override' hides virtual member functions}} + void bar(long double) final; // expected-error {{non-virtual member function marked 'final' hides virtual member functions}} + }; + + template<typename T> + struct Z : T { + static void foo() override; // expected-error {{only virtual member functions can be marked 'override'}} + }; +} |