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(); MethodHasEmptyDefaultImpl()12 virtual void MethodHasEmptyDefaultImpl() {} ComplainAboutThis()13 virtual bool ComplainAboutThis() { return true; } 14 }; 15 16 // Stubs to fill in the abstract method 17 class ConcreteVirtualMethodsInHeaders : public VirtualMethodsInHeaders { 18 public: MethodIsAbstract()19 virtual void MethodIsAbstract() override {} 20 }; 21 22 class ConcreteVirtualMethodsInImplementation 23 : public VirtualMethodsInImplementation { 24 public: MethodIsAbstract()25 virtual void MethodIsAbstract() override {} 26 }; 27 28 // Fill in the implementations MethodHasNoArguments()29void VirtualMethodsInHeaders::MethodHasNoArguments() {} MethodHasNoArguments()30void WarnOnMissingVirtual::MethodHasNoArguments() {} MethodHasNoArguments()31void VirtualMethodsInImplementation::MethodHasNoArguments() {} 32 main()33int main() { 34 ConcreteVirtualMethodsInHeaders one; 35 ConcreteVirtualMethodsInImplementation two; 36 } 37