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