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. 9class 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. 21class WarnOnMissingVirtual : public VirtualMethodsInHeaders { 22 public: 23 void MethodHasNoArguments() override; 24}; 25 26// Don't complain about things in a 'testing' namespace. 27namespace testing { 28struct TestStruct {}; 29} // namespace testing 30 31class 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