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