|
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. |
|
2 // Use of this source code is governed by a BSD-style license that can be |
|
3 // found in the LICENSE file. |
|
4 |
|
5 #ifndef VIRTUAL_METHODS_H_ |
|
6 #define VIRTUAL_METHODS_H_ |
|
7 |
|
8 // Should warn about virtual method usage. |
|
9 class VirtualMethodsInHeaders { |
|
10 public: |
|
11 // Don't complain about these. |
|
12 virtual void MethodIsAbstract() = 0; |
|
13 virtual void MethodHasNoArguments(); |
|
14 virtual void MethodHasEmptyDefaultImpl() {} |
|
15 |
|
16 // But complain about this: |
|
17 virtual bool ComplainAboutThis() { return true; } |
|
18 }; |
|
19 |
|
20 // Complain on missing 'virtual' keyword in overrides. |
|
21 class WarnOnMissingVirtual : public VirtualMethodsInHeaders { |
|
22 public: |
|
23 void MethodHasNoArguments() override; |
|
24 }; |
|
25 |
|
26 // Don't complain about things in a 'testing' namespace. |
|
27 namespace testing { |
|
28 struct TestStruct {}; |
|
29 } // namespace testing |
|
30 |
|
31 class VirtualMethodsInHeadersTesting : public VirtualMethodsInHeaders { |
|
32 public: |
|
33 // Don't complain about no virtual testing methods. |
|
34 void MethodHasNoArguments(); |
|
35 private: |
|
36 testing::TestStruct tester_; |
|
37 }; |
|
38 |
|
39 #endif // VIRTUAL_METHODS_H_ |