Index: tools/clang/plugins/tests/missing_ctor_dllexport.h |
diff --git a/tools/clang/plugins/tests/missing_ctor_dllexport.h b/tools/clang/plugins/tests/missing_ctor_dllexport.h |
new file mode 100644 |
index 0000000000000000000000000000000000000000..8363fe88064c6cbb2736b91bffb2b0c724a9dca0 |
--- /dev/null |
+++ b/tools/clang/plugins/tests/missing_ctor_dllexport.h |
@@ -0,0 +1,60 @@ |
+// 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 MISSING_CTOR_H_ |
+#define MISSING_CTOR_H_ |
+ |
+struct MyString { |
+ MyString(); |
+ MyString(const MyString&); |
+ MyString(MyString&&); |
+}; |
+ |
+template <class T> |
+struct MyVector { |
+ MyVector(); |
+ MyVector(const MyVector&); |
+ MyVector(MyVector&&); |
+}; |
+ |
+// For now, this should only warn on the missing constructor, not on the missing |
+// copy and move constructors on dllexported classes. |
+class __declspec(dllexport) MissingCtorsArentOKInHeader { |
+ public: |
+ |
+ private: |
+ MyVector<int> one_; |
+ MyVector<MyString> two_; |
+}; |
+ |
+class __declspec(dllexport) InlineImplicitMoveCtorOK { |
+ public: |
+ InlineImplicitMoveCtorOK(); |
+ |
+ private: |
+ // ctor weight = 12, dtor weight = 9. |
+ MyString one_; |
+ MyString two_; |
+ MyString three_; |
+ int four_; |
+ int five_; |
+ int six_; |
+}; |
+ |
+class __declspec(dllexport) ExplicitlyDefaultedInlineAlsoWarns { |
+ public: |
+ ExplicitlyDefaultedInlineAlsoWarns() = default; |
+ ~ExplicitlyDefaultedInlineAlsoWarns() = default; |
+ ExplicitlyDefaultedInlineAlsoWarns( |
+ const ExplicitlyDefaultedInlineAlsoWarns&) = default; |
+ ExplicitlyDefaultedInlineAlsoWarns(ExplicitlyDefaultedInlineAlsoWarns&&) = |
+ default; |
+ |
+ private: |
+ MyVector<int> one_; |
+ MyVector<MyString> two_; |
+ |
+}; |
+ |
+#endif // MISSING_CTOR_H_ |