| // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #include "virtual_methods.h" |
| |
| // Shouldn't warn about method usage in the implementation file. |
| class VirtualMethodsInImplementation { |
| public: |
| virtual void MethodIsAbstract() = 0; |
| virtual void MethodHasNoArguments(); |
| virtual void MethodHasEmptyDefaultImpl() {} |
| virtual bool ComplainAboutThis() { return true; } |
| }; |
| |
| // Stubs to fill in the abstract method |
| class ConcreteVirtualMethodsInHeaders : public VirtualMethodsInHeaders { |
| public: |
| virtual void MethodIsAbstract() override {} |
| }; |
| |
| class ConcreteVirtualMethodsInImplementation |
| : public VirtualMethodsInImplementation { |
| public: |
| virtual void MethodIsAbstract() override {} |
| }; |
| |
| // Fill in the implementations |
| void VirtualMethodsInHeaders::MethodHasNoArguments() {} |
| void WarnOnMissingVirtual::MethodHasNoArguments() {} |
| void VirtualMethodsInImplementation::MethodHasNoArguments() {} |
| |
| int main() { |
| ConcreteVirtualMethodsInHeaders one; |
| ConcreteVirtualMethodsInImplementation two; |
| } |