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