1 | // RUN: %clang_cc1 -fsyntax-only -std=c++11 %s -verify -Winconsistent-missing-destructor-override |
2 | |
3 | class A { |
4 | public: |
5 | ~A() {} |
6 | void virtual run() {} |
7 | }; |
8 | |
9 | class B : public A { |
10 | public: |
11 | void run() override {} |
12 | ~B() {} |
13 | }; |
14 | |
15 | class C { |
16 | public: |
17 | virtual void run() {} |
18 | virtual ~C() {} // expected-note 2{{overridden virtual function is here}} |
19 | }; |
20 | |
21 | class D : public C { |
22 | public: |
23 | void run() override {} |
24 | ~D() {} |
25 | // expected-warning@-1 {{'~D' overrides a destructor but is not marked 'override'}} |
26 | }; |
27 | |
28 | class E : public C { |
29 | public: |
30 | void run() override {} |
31 | virtual ~E() {} |
32 | // expected-warning@-1 {{'~E' overrides a destructor but is not marked 'override'}} |
33 | }; |
34 | |