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_ 40