p3-0x.cpp revision 2e1c730167d2b978c66558c029d163ffe64b9656
19e682d9f567a51f26c3b0673837e23bafdb09c11Anders Carlsson// RUN: %clang_cc1 -fsyntax-only -std=c++0x -verify %s
29e682d9f567a51f26c3b0673837e23bafdb09c11Anders Carlsson
33ffe183448af7c543a208dd3313a49c83a3ad53eAnders Carlssonnamespace Test1 {
43ffe183448af7c543a208dd3313a49c83a3ad53eAnders Carlsson
59e682d9f567a51f26c3b0673837e23bafdb09c11Anders Carlssonstruct B {
69e682d9f567a51f26c3b0673837e23bafdb09c11Anders Carlsson  virtual void f(int);
79e682d9f567a51f26c3b0673837e23bafdb09c11Anders Carlsson};
89e682d9f567a51f26c3b0673837e23bafdb09c11Anders Carlsson
99e682d9f567a51f26c3b0673837e23bafdb09c11Anders Carlssonstruct D : B {
109e682d9f567a51f26c3b0673837e23bafdb09c11Anders Carlsson  virtual void f(long) override; // expected-error {{'f' marked 'override' but does not override any member functions}}
119e682d9f567a51f26c3b0673837e23bafdb09c11Anders Carlsson  void f(int) override;
129e682d9f567a51f26c3b0673837e23bafdb09c11Anders Carlsson};
133ffe183448af7c543a208dd3313a49c83a3ad53eAnders Carlsson}
143ffe183448af7c543a208dd3313a49c83a3ad53eAnders Carlsson
153ffe183448af7c543a208dd3313a49c83a3ad53eAnders Carlssonnamespace Test2 {
163ffe183448af7c543a208dd3313a49c83a3ad53eAnders Carlsson
173ffe183448af7c543a208dd3313a49c83a3ad53eAnders Carlssonstruct A {
183ffe183448af7c543a208dd3313a49c83a3ad53eAnders Carlsson  virtual void f(int, char, int);
193ffe183448af7c543a208dd3313a49c83a3ad53eAnders Carlsson};
203ffe183448af7c543a208dd3313a49c83a3ad53eAnders Carlsson
213ffe183448af7c543a208dd3313a49c83a3ad53eAnders Carlssontemplate<typename T>
223ffe183448af7c543a208dd3313a49c83a3ad53eAnders Carlssonstruct B : A {
233ffe183448af7c543a208dd3313a49c83a3ad53eAnders Carlsson  virtual void f(T) override;
243ffe183448af7c543a208dd3313a49c83a3ad53eAnders Carlsson};
253ffe183448af7c543a208dd3313a49c83a3ad53eAnders Carlsson
263ffe183448af7c543a208dd3313a49c83a3ad53eAnders Carlsson}
279eefa229dfb71400a6bbee326420a7f0e2e91f1fAnders Carlsson
289eefa229dfb71400a6bbee326420a7f0e2e91f1fAnders Carlssonnamespace Test3 {
299eefa229dfb71400a6bbee326420a7f0e2e91f1fAnders Carlsson
309eefa229dfb71400a6bbee326420a7f0e2e91f1fAnders Carlssonstruct A {
319eefa229dfb71400a6bbee326420a7f0e2e91f1fAnders Carlsson  virtual void f(int, char, int);
329eefa229dfb71400a6bbee326420a7f0e2e91f1fAnders Carlsson};
339eefa229dfb71400a6bbee326420a7f0e2e91f1fAnders Carlsson
349eefa229dfb71400a6bbee326420a7f0e2e91f1fAnders Carlssontemplate<typename... Args>
359eefa229dfb71400a6bbee326420a7f0e2e91f1fAnders Carlssonstruct B : A {
369eefa229dfb71400a6bbee326420a7f0e2e91f1fAnders Carlsson  virtual void f(Args...) override; // expected-error {{'f' marked 'override' but does not override any member functions}}
379eefa229dfb71400a6bbee326420a7f0e2e91f1fAnders Carlsson};
389eefa229dfb71400a6bbee326420a7f0e2e91f1fAnders Carlsson
399eefa229dfb71400a6bbee326420a7f0e2e91f1fAnders Carlssontemplate struct B<int, char, int>;
409eefa229dfb71400a6bbee326420a7f0e2e91f1fAnders Carlssontemplate struct B<int>; // expected-note {{in instantiation of template class 'Test3::B<int>' requested here}}
419eefa229dfb71400a6bbee326420a7f0e2e91f1fAnders Carlsson
429eefa229dfb71400a6bbee326420a7f0e2e91f1fAnders Carlsson}
432e1c730167d2b978c66558c029d163ffe64b9656Anders Carlsson
442e1c730167d2b978c66558c029d163ffe64b9656Anders Carlssonnamespace Test4 {
452e1c730167d2b978c66558c029d163ffe64b9656Anders Carlssonstruct B {
462e1c730167d2b978c66558c029d163ffe64b9656Anders Carlsson  virtual void f() const final; // expected-note {{overridden virtual function is here}}
472e1c730167d2b978c66558c029d163ffe64b9656Anders Carlsson};
482e1c730167d2b978c66558c029d163ffe64b9656Anders Carlsson
492e1c730167d2b978c66558c029d163ffe64b9656Anders Carlssonstruct D : B {
502e1c730167d2b978c66558c029d163ffe64b9656Anders Carlsson  void f() const; // expected-error {{declaration of 'f' overrides a 'final' function}}
512e1c730167d2b978c66558c029d163ffe64b9656Anders Carlsson};
522e1c730167d2b978c66558c029d163ffe64b9656Anders Carlsson
532e1c730167d2b978c66558c029d163ffe64b9656Anders Carlsson}
54