diff options
Diffstat (limited to 'clang/test/CXX/class/class.mem')
| -rw-r--r-- | clang/test/CXX/class/class.mem/p8-0x-pedantic.cpp | 14 | ||||
| -rw-r--r-- | clang/test/CXX/class/class.mem/p8-0x.cpp | 28 |
2 files changed, 42 insertions, 0 deletions
diff --git a/clang/test/CXX/class/class.mem/p8-0x-pedantic.cpp b/clang/test/CXX/class/class.mem/p8-0x-pedantic.cpp new file mode 100644 index 00000000000..a4b775c191d --- /dev/null +++ b/clang/test/CXX/class/class.mem/p8-0x-pedantic.cpp @@ -0,0 +1,14 @@ +// RUN: %clang_cc1 -fsyntax-only -std=c++0x -pedantic -verify %s + +namespace inline_extension { + struct Base1 { + virtual void f() {} + }; + + struct B : Base1 { + virtual void f() override {} // expected-warning {{'override' keyword only allowed in declarations, allowed as an extension}} + virtual void g() final {} // expected-warning {{'final' keyword only allowed in declarations, allowed as an extension}} + virtual void h() new {} // expected-warning {{'new' keyword only allowed in declarations, allowed as an extension}} + }; +} + diff --git a/clang/test/CXX/class/class.mem/p8-0x.cpp b/clang/test/CXX/class/class.mem/p8-0x.cpp index ce676ae6ff5..bf1b4c177bf 100644 --- a/clang/test/CXX/class/class.mem/p8-0x.cpp +++ b/clang/test/CXX/class/class.mem/p8-0x.cpp @@ -11,10 +11,12 @@ struct A : Base1 { }; struct Base2 { + virtual void e1(), e2(); virtual void f(); }; struct B : Base2 { + virtual void e1() override, e2(int); // No error. virtual void f() override; void g() override; // expected-error {{only virtual member functions can be marked 'override'}} int h override; // expected-error {{only virtual member functions can be marked 'override'}} @@ -25,3 +27,29 @@ struct C { void g() final; // expected-error {{only virtual member functions can be marked 'final'}} int h final; // expected-error {{only virtual member functions can be marked 'final'}} }; + +namespace inline_extension { + struct Base1 { + virtual void g() {} + }; + + struct A : Base1 { + virtual void f() new new {} // expected-error {{class member already marked 'new'}} + virtual void g() override override {} // expected-error {{class member already marked 'override'}} + virtual void h() final final {} // expected-error {{class member already marked 'final'}} + }; + + struct Base2 { + virtual void f(); + }; + + struct B : Base2 { + virtual void f() override {} + void g() override {} // expected-error {{only virtual member functions can be marked 'override'}} + }; + + struct C { + virtual void f() final {} + void g() final {} // expected-error {{only virtual member functions can be marked 'final'}} + }; +} |

