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_bodies.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 void MethodIsAbstract() override {} 20 }; 21 22 class ConcreteVirtualMethodsInImplementation 23 : public VirtualMethodsInImplementation { 24 public: MethodIsAbstract()25 void MethodIsAbstract() override {} 26 }; 27 28 // Fill in the implementations MethodHasNoArguments()29void VirtualMethodsInHeaders::MethodHasNoArguments() { 30 } MethodHasNoArguments()31void WarnOnMissingVirtual::MethodHasNoArguments() { 32 } MethodHasNoArguments()33void VirtualMethodsInImplementation::MethodHasNoArguments() { 34 } 35 main()36int main() { 37 ConcreteVirtualMethodsInHeaders one; 38 ConcreteVirtualMethodsInImplementation two; 39 } 40