1 // Copyright (c) 2012 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 #include "virtual_methods.h" 6 7 // Shouldn't warn about method usage in the implementation file. 8 class VirtualMethodsInImplementation { 9 public: 10 virtual void MethodIsAbstract() = 0; 11 virtual void MethodHasNoArguments(); 12 virtual void MethodHasEmptyDefaultImpl() {} 13 virtual bool ComplainAboutThis() { return true; } 14 }; 15 16 // Stubs to fill in the abstract method 17 class ConcreteVirtualMethodsInHeaders : public VirtualMethodsInHeaders { 18 public: 19 virtual void MethodIsAbstract() override {} 20 }; 21 22 class ConcreteVirtualMethodsInImplementation 23 : public VirtualMethodsInImplementation { 24 public: 25 virtual void MethodIsAbstract() override {} 26 }; 27 28 // Fill in the implementations 29 void VirtualMethodsInHeaders::MethodHasNoArguments() {} 30 void WarnOnMissingVirtual::MethodHasNoArguments() {} 31 void VirtualMethodsInImplementation::MethodHasNoArguments() {} 32 33 int main() { 34 ConcreteVirtualMethodsInHeaders one; 35 ConcreteVirtualMethodsInImplementation two; 36 } 37