================
@@ -0,0 +1,57 @@
+// RUN: %check_clang_tidy %s bugprone-incorrect-enable-shared-from-this %t --
--
+
+namespace std {
+ template <typename T> class enable_shared_from_this {};
+} //namespace std
+
+class BadClassExample : std::enable_shared_from_this<BadClassExample> {};
+// CHECK-MESSAGES: :[[@LINE-1]]:7: warning: inheritance from
std::enable_shared_from_this should be public inheritance, otherwise the
internal weak_ptr won't be initialized
[bugprone-incorrect-enable-shared-from-this]
+// CHECK-FIXES: public std::enable_shared_from_this<BadClassExample>
+
+class BadClass2Example : private
std::enable_shared_from_this<BadClass2Example> {};
+// CHECK-MESSAGES: :[[@LINE-1]]:7: warning: inheritance from
std::enable_shared_from_this should be public inheritance, otherwise the
internal weak_ptr won't be initialized
[bugprone-incorrect-enable-shared-from-this]
+// CHECK-FIXES: public std::enable_shared_from_this<BadClass2Example>
+
+struct BadStructExample : private
std::enable_shared_from_this<BadStructExample> {};
+// CHECK-MESSAGES: :[[@LINE-1]]:8: warning: inheritance from
std::enable_shared_from_this should be public inheritance, otherwise the
internal weak_ptr won't be initialized
[bugprone-incorrect-enable-shared-from-this]
+// CHECK-FIXES: public std::enable_shared_from_this<BadStructExample>
+
+class GoodClassExample : public std::enable_shared_from_this<GoodClassExample>
{};
+
+struct GoodStructExample : public
std::enable_shared_from_this<GoodStructExample> {};
+
+struct GoodStruct2Example : std::enable_shared_from_this<GoodStruct2Example>
{};
+
+class dummy_class1 {};
+class dummy_class2 {};
+
+class BadMultiClassExample :
std::enable_shared_from_this<BadMultiClassExample>, dummy_class1 {};
+// CHECK-MESSAGES: :[[@LINE-1]]:7: warning: inheritance from
std::enable_shared_from_this should be public inheritance, otherwise the
internal weak_ptr won't be initialized
[bugprone-incorrect-enable-shared-from-this]
+// CHECK-FIXES: public std::enable_shared_from_this<BadMultiClassExample>,
dummy_class1
+
+class BadMultiClass2Example : dummy_class1,
std::enable_shared_from_this<BadMultiClass2Example>, dummy_class2 {};
+// CHECK-MESSAGES: :[[@LINE-1]]:7: warning: inheritance from
std::enable_shared_from_this should be public inheritance, otherwise the
internal weak_ptr won't be initialized
[bugprone-incorrect-enable-shared-from-this]
+// CHECK-FIXES: dummy_class1, public
std::enable_shared_from_this<BadMultiClass2Example>, dummy_class2
+
+class BadMultiClass3Example : dummy_class1, dummy_class2,
std::enable_shared_from_this<BadMultiClass3Example> {};
+// CHECK-MESSAGES: :[[@LINE-1]]:7: warning: inheritance from
std::enable_shared_from_this should be public inheritance, otherwise the
internal weak_ptr won't be initialized
[bugprone-incorrect-enable-shared-from-this]
+// CHECK-FIXES: dummy_class1, dummy_class2, public
std::enable_shared_from_this<BadMultiClass3Example>
+
+template <typename T> class enable_shared_from_this {};
+
+class NoStdClassExample : public enable_shared_from_this<NoStdClassExample> {};
+// CHECK-MESSAGES: :[[@LINE-1]]:7: warning: Should be
std::enable_shared_from_this [bugprone-incorrect-enable-shared-from-this]
+// CHECK-FIXES: public std::enable_shared_from_this<NoStdClassExample>
+
+struct NoStdStructExample : enable_shared_from_this<NoStdStructExample> {};
+// CHECK-MESSAGES: :[[@LINE-1]]:8: warning: Should be
std::enable_shared_from_this [bugprone-incorrect-enable-shared-from-this]
+// CHECK-FIXES: std::enable_shared_from_this<NoStdStructExample>
+
+class BadMixedProblemExample : enable_shared_from_this<BadMixedProblemExample>
{};
+// CHECK-MESSAGES: :[[@LINE-1]]:7: warning: Should be
std::enable_shared_from_this and inheritance from std::enable_shared_from_this
should be public inheritance, otherwise the internal weak_ptr won't be
initialized [bugprone-incorrect-enable-shared-from-this]
+// CHECK-FIXES: public std::enable_shared_from_this<BadMixedProblemExample>
+
+//FIXME: can't do anything about this, clang-check -ast-dump doesn't show A's
internals in class B's AST
+class A : public std::enable_shared_from_this<A> {};
+class B : private A{};
+
----------------
EugeneZelenko wrote:
Excessive newline.
https://github.com/llvm/llvm-project/pull/102299
_______________________________________________
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits