Index: tools/clang/plugins/tests/virtual_bodies.h |
diff --git a/tools/clang/plugins/tests/virtual_bodies.h b/tools/clang/plugins/tests/virtual_bodies.h |
new file mode 100644 |
index 0000000000000000000000000000000000000000..fb971c3f1e89dd0d8f7d8cced841dff0b7f4e288 |
--- /dev/null |
+++ b/tools/clang/plugins/tests/virtual_bodies.h |
@@ -0,0 +1,50 @@ |
+// Copyright (c) 2011 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. |
+ |
+#ifndef VIRTUAL_METHODS_H_ |
+#define VIRTUAL_METHODS_H_ |
+ |
+// Note: This is not actual windows.h but the stub file in system/windows.h |
+#include <windows.h> |
+ |
+#define CR_BEGIN_MSG_MAP_EX(theClass) virtual int f() { return 4; } |
+#define BEGIN_SAFE_MSG_MAP_EX(theClass) virtual int g() { return 4; } |
+ |
+// Should warn about virtual method usage. |
+class VirtualMethodsInHeaders { |
+ public: |
+ // Don't complain about these. |
+ virtual void MethodIsAbstract() = 0; |
+ virtual void MethodHasNoArguments(); |
+ virtual void MethodHasEmptyDefaultImpl() {} |
+ |
+ // But complain about this: |
+ virtual bool ComplainAboutThis() { return true; } |
+ |
+ SYSTEM_INLINE_VIRTUAL |
+ CR_BEGIN_MSG_MAP_EX(Sub) |
+ BEGIN_SAFE_MSG_MAP_EX(Sub) |
+}; |
+ |
+// Complain on missing 'virtual' keyword in overrides. |
+class WarnOnMissingVirtual : public VirtualMethodsInHeaders { |
+ public: |
+ void MethodHasNoArguments() override; |
+}; |
+ |
+// Don't complain about things in a 'testing' namespace. |
+namespace testing { |
+struct TestStruct {}; |
+} // namespace testing |
+ |
+class VirtualMethodsInHeadersTesting : public VirtualMethodsInHeaders { |
+ public: |
+ // Don't complain about no virtual testing methods. |
+ void MethodHasNoArguments(); |
+ |
+ private: |
+ testing::TestStruct tester_; |
+}; |
+ |
+#endif // VIRTUAL_METHODS_H_ |