https://github.com/vbvictor updated 
https://github.com/llvm/llvm-project/pull/186649

>From eaf9247dfaa770d8f7b76a7b3ac8a313323d12c5 Mon Sep 17 00:00:00 2001
From: Victor Baranov <[email protected]>
Date: Sun, 15 Mar 2026 11:40:27 +0300
Subject: [PATCH 1/2] [clang-tidy][NFC] Use universal memory mock for smart
 ptrs

---
 .../checkers/Inputs/Headers/std/memory        | 167 ++++++++++++++++++
 .../bugprone/shared-ptr-array-mismatch.cpp    |  12 +-
 .../bugprone/unhandled-self-assignment.cpp    |  19 +-
 .../bugprone/unique-ptr-array-mismatch.cpp    |  23 +--
 .../checkers/bugprone/unused-return-value.cpp |  14 +-
 .../checkers/bugprone/use-after-move.cpp      |  30 +---
 .../avoid-const-or-ref-data-members.cpp       |   7 +-
 .../checkers/misc/uniqueptr-reset-release.cpp |  16 +-
 .../Inputs/replace-auto-ptr/memory.h          |  45 -----
 .../modernize/Inputs/smart-ptr/shared_ptr.h   |  34 +---
 .../modernize/Inputs/smart-ptr/unique_ptr.h   |  29 +--
 .../checkers/modernize/make-shared-header.cpp |   5 +-
 .../checkers/modernize/make-unique-cxx11.cpp  |   6 +-
 .../modernize/make-unique-default-init.cpp    |   6 +-
 .../checkers/modernize/make-unique-header.cpp |   5 +-
 .../checkers/modernize/make-unique-macros.cpp |   2 +-
 .../checkers/modernize/replace-auto-ptr.cpp   |   2 +-
 .../checkers/modernize/use-emplace.cpp        |   7 +-
 .../checkers/modernize/use-ranges.cpp         |   2 +-
 ...us-smartptr-reset-call-custom-pointers.cpp |   5 +-
 .../ambiguous-smartptr-reset-call.cpp         |   5 +-
 .../readability/container-data-pointer.cpp    |   7 +-
 .../readability/container-size-empty.cpp      |   8 -
 .../redundant-smartptr-get-macros.cpp         |  12 +-
 .../readability/redundant-smartptr-get.cpp    |  35 +---
 .../readability/uniqueptr-delete-release.cpp  |  22 +--
 26 files changed, 200 insertions(+), 325 deletions(-)
 delete mode 100644 
clang-tools-extra/test/clang-tidy/checkers/modernize/Inputs/replace-auto-ptr/memory.h

diff --git 
a/clang-tools-extra/test/clang-tidy/checkers/Inputs/Headers/std/memory 
b/clang-tools-extra/test/clang-tidy/checkers/Inputs/Headers/std/memory
index 2ec18dbec18f4..234f168fd1c40 100644
--- a/clang-tools-extra/test/clang-tidy/checkers/Inputs/Headers/std/memory
+++ b/clang-tools-extra/test/clang-tidy/checkers/Inputs/Headers/std/memory
@@ -1,8 +1,175 @@
 #ifndef _MEMORY_
 #define _MEMORY_
 
+#include "stddef.h"
+
 namespace std {
 
+template <typename T>
+struct default_delete {};
+
+template <typename T>
+struct default_delete<T[]> {};
+
+template <typename T, typename Deleter = default_delete<T>>
+class unique_ptr {
+public:
+  unique_ptr() noexcept {}
+  explicit unique_ptr(T *p) noexcept {}
+  unique_ptr(T *p, Deleter d) noexcept {}
+  unique_ptr(const unique_ptr &) = delete;
+  unique_ptr(unique_ptr &&t) noexcept {}
+  template <typename U, typename E>
+  unique_ptr(unique_ptr<U, E> &&t) noexcept {}
+  ~unique_ptr() {}
+
+  T &operator*() const { return *ptr; }
+  T *operator->() const { return ptr; }
+  explicit operator bool() const noexcept { return ptr != nullptr; }
+
+  T *get() const { return ptr; }
+  T *release() { return ptr; }
+  void reset() {}
+  void reset(T *p) {}
+
+  unique_ptr &operator=(unique_ptr &&) noexcept { return *this; }
+  template <typename U, typename E>
+  unique_ptr &operator=(unique_ptr<U, E> &&) noexcept { return *this; }
+
+  bool operator==(const unique_ptr &) const noexcept { return false; }
+  bool operator!=(const unique_ptr &) const noexcept { return true; }
+
+private:
+  T *ptr = nullptr;
+};
+
+template <typename T, typename Deleter>
+class unique_ptr<T[], Deleter> {
+public:
+  unique_ptr() noexcept {}
+  template <typename U>
+  explicit unique_ptr(U p) noexcept {}
+  template <typename U>
+  unique_ptr(U p, Deleter d) noexcept {}
+  ~unique_ptr() {}
+
+  T &operator[](size_t i) const { return ptr[i]; }
+  T *get() const { return ptr; }
+  explicit operator bool() const noexcept { return ptr != nullptr; }
+
+  void reset() {}
+  void reset(T *p) {}
+
+private:
+  T *ptr = nullptr;
+};
+
+template <typename T, typename... Args>
+unique_ptr<T> make_unique(Args &&...args) {
+  return unique_ptr<T>(new T(static_cast<Args &&>(args)...));
+}
+
+template <typename T>
+class shared_ptr {
+public:
+  shared_ptr() {}
+  explicit shared_ptr(T *p) {}
+  template <typename Y>
+  explicit shared_ptr(Y *p) {}
+  template <typename Y, typename D>
+  shared_ptr(Y *p, D d) {}
+  shared_ptr(const shared_ptr &) {}
+  shared_ptr(shared_ptr &&) {}
+  ~shared_ptr() {}
+
+  T &operator*() const { return *this->get(); }
+  T *operator->() const { return this->get(); }
+  T *get() const { return ptr; }
+  void reset() {}
+  void reset(T *p) {}
+  explicit operator bool() const noexcept { return this->get() != nullptr; }
+
+  shared_ptr &operator=(shared_ptr &&) { return *this; }
+  template <typename U>
+  shared_ptr &operator=(shared_ptr<U> &&) { return *this; }
+
+private:
+  T *ptr = nullptr;
+};
+
+template <typename T>
+class shared_ptr<T[]> {
+public:
+  shared_ptr() {}
+  explicit shared_ptr(T *p) {}
+  template <typename Y>
+  explicit shared_ptr(Y *p) {}
+  template <typename Y, typename D>
+  shared_ptr(Y *p, D d) {}
+  shared_ptr(const shared_ptr &) {}
+  shared_ptr(shared_ptr &&) {}
+  ~shared_ptr() {}
+
+  T &operator[](size_t i) const { return ptr[i]; }
+  T *get() const { return ptr; }
+  void reset() {}
+  void reset(T *p) {}
+  explicit operator bool() const noexcept { return ptr != nullptr; }
+
+private:
+  T *ptr = nullptr;
+};
+
+template <typename T, typename... Args>
+shared_ptr<T> make_shared(Args &&...args) {
+  return shared_ptr<T>(new T(static_cast<Args &&>(args)...));
+}
+
+template <typename T>
+class weak_ptr {
+public:
+  weak_ptr() {}
+  bool expired() const { return true; }
+};
+
+template <typename Y>
+struct auto_ptr_ref {
+  Y *ptr;
+};
+
+template <typename X>
+class auto_ptr {
+public:
+  typedef X element_type;
+  explicit auto_ptr(X *p = 0) throw() {}
+  auto_ptr(auto_ptr &a) throw() {}
+  template <typename Y>
+  auto_ptr(auto_ptr<Y> &a) throw() {}
+  auto_ptr &operator=(auto_ptr &a) throw() { return *this; }
+  template <typename Y>
+  auto_ptr &operator=(auto_ptr<Y> &a) throw() { return *this; }
+  auto_ptr &operator=(auto_ptr_ref<X> r) throw() { return *this; }
+  ~auto_ptr() throw() {}
+  auto_ptr(auto_ptr_ref<X> r) throw() {}
+  template <typename Y>
+  operator auto_ptr_ref<Y>() throw() {
+    auto_ptr_ref<Y> r;
+    r.ptr = ptr;
+    return r;
+  }
+  template <typename Y>
+  operator auto_ptr<Y>() throw() { return auto_ptr<Y>(ptr); }
+
+private:
+  X *ptr = nullptr;
+};
+
+template <>
+class auto_ptr<void> {
+public:
+  typedef void element_type;
+};
+
 template <typename T>
 class allocator {};
 
diff --git 
a/clang-tools-extra/test/clang-tidy/checkers/bugprone/shared-ptr-array-mismatch.cpp
 
b/clang-tools-extra/test/clang-tidy/checkers/bugprone/shared-ptr-array-mismatch.cpp
index 70449e6bfc24c..dab7ef0d071f5 100644
--- 
a/clang-tools-extra/test/clang-tidy/checkers/bugprone/shared-ptr-array-mismatch.cpp
+++ 
b/clang-tools-extra/test/clang-tidy/checkers/bugprone/shared-ptr-array-mismatch.cpp
@@ -1,16 +1,6 @@
 // RUN: %check_clang_tidy %s bugprone-shared-ptr-array-mismatch %t
 
-namespace std {
-
-template <typename T>
-struct shared_ptr {
-  template <class Y>
-  explicit shared_ptr(Y *) {}
-  template <class Y, class Deleter>
-  shared_ptr(Y *, Deleter) {}
-};
-
-} // namespace std
+#include <memory>
 
 struct A {};
 
diff --git 
a/clang-tools-extra/test/clang-tidy/checkers/bugprone/unhandled-self-assignment.cpp
 
b/clang-tools-extra/test/clang-tidy/checkers/bugprone/unhandled-self-assignment.cpp
index 0386c9bfda359..c0a65f3cb9bef 100644
--- 
a/clang-tools-extra/test/clang-tidy/checkers/bugprone/unhandled-self-assignment.cpp
+++ 
b/clang-tools-extra/test/clang-tidy/checkers/bugprone/unhandled-self-assignment.cpp
@@ -1,27 +1,10 @@
 // RUN: %check_clang_tidy %s bugprone-unhandled-self-assignment %t -- -- 
-fno-delayed-template-parsing
 
 #include <utility>
+#include <memory>
 
 namespace std {
 
-template <typename T> class default_delete {};
-
-template <class T, typename Deleter = std::default_delete<T>>
-class unique_ptr {
-};
-
-template <class T>
-class shared_ptr {
-};
-
-template <class T>
-class weak_ptr {
-};
-
-template <class T>
-class auto_ptr {
-};
-
 namespace pmr {
     template <typename TYPE = void>
     class allocator {};
diff --git 
a/clang-tools-extra/test/clang-tidy/checkers/bugprone/unique-ptr-array-mismatch.cpp
 
b/clang-tools-extra/test/clang-tidy/checkers/bugprone/unique-ptr-array-mismatch.cpp
index 494e83dce3720..7076461497fc3 100644
--- 
a/clang-tools-extra/test/clang-tidy/checkers/bugprone/unique-ptr-array-mismatch.cpp
+++ 
b/clang-tools-extra/test/clang-tidy/checkers/bugprone/unique-ptr-array-mismatch.cpp
@@ -1,27 +1,6 @@
 // RUN: %check_clang_tidy %s bugprone-unique-ptr-array-mismatch %t
 
-namespace std {
-
-template<class T> struct default_delete {};
-template<class T> struct default_delete<T[]> {};
-
-template<class T, class Deleter = std::default_delete<T>>
-class unique_ptr {
-public:
-  explicit unique_ptr(T* p) noexcept;
-  unique_ptr(T* p, Deleter d1 ) noexcept;
-};
-
-template <class T, class Deleter>
-class unique_ptr<T[], Deleter> {
-public:
-  template<class U>
-  explicit unique_ptr(U p) noexcept;
-  template<class U>
-  unique_ptr(U p, Deleter d1) noexcept;
-};
-
-} // namespace std
+#include <memory>
 
 struct A {};
 
diff --git 
a/clang-tools-extra/test/clang-tidy/checkers/bugprone/unused-return-value.cpp 
b/clang-tools-extra/test/clang-tidy/checkers/bugprone/unused-return-value.cpp
index 7ecacabef1a0b..3fa87b94dc6b4 100644
--- 
a/clang-tools-extra/test/clang-tidy/checkers/bugprone/unused-return-value.cpp
+++ 
b/clang-tools-extra/test/clang-tidy/checkers/bugprone/unused-return-value.cpp
@@ -1,6 +1,7 @@
 // RUN: %check_clang_tidy %s bugprone-unused-return-value %t -- \
 // RUN:   --config="{CheckOptions: 
{bugprone-unused-return-value.AllowCastToVoid: true}}" -- -fexceptions
 #include <vector>
+#include <memory>
 
 namespace std {
 
@@ -26,19 +27,6 @@ ForwardIt remove_if(ForwardIt, ForwardIt, UnaryPredicate);
 template <typename ForwardIt>
 ForwardIt unique(ForwardIt, ForwardIt);
 
-template <typename T>
-struct default_delete;
-
-template <typename T, typename Deleter = std::default_delete<T>>
-struct unique_ptr {
-  unique_ptr();
-  unique_ptr(unique_ptr const&);
-  unique_ptr(unique_ptr &&);
-  unique_ptr& operator=(unique_ptr const&);
-  unique_ptr& operator=(unique_ptr &&);
-  T *release() noexcept;
-};
-
 template <typename T>
 struct char_traits;
 
diff --git 
a/clang-tools-extra/test/clang-tidy/checkers/bugprone/use-after-move.cpp 
b/clang-tools-extra/test/clang-tidy/checkers/bugprone/use-after-move.cpp
index 983a7ec578c8d..5d95c44fc318f 100644
--- a/clang-tools-extra/test/clang-tidy/checkers/bugprone/use-after-move.cpp
+++ b/clang-tools-extra/test/clang-tidy/checkers/bugprone/use-after-move.cpp
@@ -12,38 +12,12 @@
 // RUN:   -fno-delayed-template-parsing
 
 #include <utility>
+#include <memory>
 
 typedef decltype(nullptr) nullptr_t;
 
 namespace std {
 
-template <typename T>
-struct unique_ptr {
-  unique_ptr();
-  T *get() const;
-  explicit operator bool() const;
-  void reset(T *ptr);
-  T &operator*() const;
-  T *operator->() const;
-  T& operator[](size_t i) const;
-};
-
-template <typename T>
-struct shared_ptr {
-  shared_ptr();
-  T *get() const;
-  explicit operator bool() const;
-  void reset(T *ptr);
-  T &operator*() const;
-  T *operator->() const;
-};
-
-template <typename T>
-struct weak_ptr {
-  weak_ptr();
-  bool expired() const;
-};
-
 template <typename T>
 struct optional {
   optional();
@@ -224,7 +198,7 @@ void standardSmartPtr() {
     // CHECK-NOTES: [[@LINE-3]]:5: note: move occurred here
   }
   {
-    std::unique_ptr<A> ptr;
+    std::unique_ptr<A[]> ptr;
     std::move(ptr);
     ptr[0];
     // CHECK-NOTES: [[@LINE-1]]:5: warning: 'ptr' used after it was moved
diff --git 
a/clang-tools-extra/test/clang-tidy/checkers/cppcoreguidelines/avoid-const-or-ref-data-members.cpp
 
b/clang-tools-extra/test/clang-tidy/checkers/cppcoreguidelines/avoid-const-or-ref-data-members.cpp
index 19da88300aec4..bd6e1ce301fd5 100644
--- 
a/clang-tools-extra/test/clang-tidy/checkers/cppcoreguidelines/avoid-const-or-ref-data-members.cpp
+++ 
b/clang-tools-extra/test/clang-tidy/checkers/cppcoreguidelines/avoid-const-or-ref-data-members.cpp
@@ -1,11 +1,6 @@
 // RUN: %check_clang_tidy %s cppcoreguidelines-avoid-const-or-ref-data-members 
%t
-namespace std {
-template <typename T>
-struct unique_ptr {};
 
-template <typename T>
-struct shared_ptr {};
-} // namespace std
+#include <memory>
 
 namespace gsl {
 template <typename T>
diff --git 
a/clang-tools-extra/test/clang-tidy/checkers/misc/uniqueptr-reset-release.cpp 
b/clang-tools-extra/test/clang-tidy/checkers/misc/uniqueptr-reset-release.cpp
index 629f55a96f3b8..f14598d2eb4b9 100644
--- 
a/clang-tools-extra/test/clang-tidy/checkers/misc/uniqueptr-reset-release.cpp
+++ 
b/clang-tools-extra/test/clang-tidy/checkers/misc/uniqueptr-reset-release.cpp
@@ -2,21 +2,7 @@
 
 // CHECK-FIXES: #include <utility>
 
-namespace std {
-
-template <typename T>
-struct default_delete {};
-
-template <typename T, class Deleter = std::default_delete<T>>
-struct unique_ptr {
-  unique_ptr();
-  explicit unique_ptr(T *);
-  template <typename U, typename E>
-  unique_ptr(unique_ptr<U, E> &&);
-  void reset(T *);
-  T *release();
-};
-} // namespace std
+#include <memory>
 
 struct Foo {};
 struct Bar : Foo {};
diff --git 
a/clang-tools-extra/test/clang-tidy/checkers/modernize/Inputs/replace-auto-ptr/memory.h
 
b/clang-tools-extra/test/clang-tidy/checkers/modernize/Inputs/replace-auto-ptr/memory.h
deleted file mode 100644
index bc476ced927a5..0000000000000
--- 
a/clang-tools-extra/test/clang-tidy/checkers/modernize/Inputs/replace-auto-ptr/memory.h
+++ /dev/null
@@ -1,45 +0,0 @@
-#ifndef INPUTS_MEMORY_H
-#define INPUTS_MEMORY_H
-
-namespace std {
-
-inline namespace _1 {
-
-template <class Y> struct auto_ptr_ref {
-  Y *y_;
-};
-
-template <class X> class auto_ptr {
-public:
-  typedef X element_type;
-  explicit auto_ptr(X *p = 0) throw() {}
-  auto_ptr(auto_ptr &) throw() {}
-  template <class Y> auto_ptr(auto_ptr<Y> &) throw() {}
-  auto_ptr &operator=(auto_ptr &) throw() { return *this; }
-  template <class Y> auto_ptr &operator=(auto_ptr<Y> &) throw() {
-    return *this;
-  }
-  auto_ptr &operator=(auto_ptr_ref<X> r) throw() { return *this; }
-  ~auto_ptr() throw() {}
-  auto_ptr(auto_ptr_ref<X> r) throw() : x_(r.y_) {}
-  template <class Y> operator auto_ptr_ref<Y>() throw() {
-    auto_ptr_ref<Y> r;
-    r.y_ = x_;
-    return r;
-  }
-  template <class Y> operator auto_ptr<Y>() throw() { return auto_ptr<Y>(x_); }
-
-private:
-  X *x_;
-};
-
-template <> class auto_ptr<void> {
-public:
-  typedef void element_type;
-};
-
-} // namespace _1
-
-} // end namespace std
-
-#endif // INPUTS_MEMORY_H
diff --git 
a/clang-tools-extra/test/clang-tidy/checkers/modernize/Inputs/smart-ptr/shared_ptr.h
 
b/clang-tools-extra/test/clang-tidy/checkers/modernize/Inputs/smart-ptr/shared_ptr.h
index 337cb28228b09..ef00360c87d72 100644
--- 
a/clang-tools-extra/test/clang-tidy/checkers/modernize/Inputs/smart-ptr/shared_ptr.h
+++ 
b/clang-tools-extra/test/clang-tidy/checkers/modernize/Inputs/smart-ptr/shared_ptr.h
@@ -1,33 +1 @@
-namespace std {
-
-template <typename type>
-class __shared_ptr {
-protected:
-  __shared_ptr();
-  __shared_ptr(type *ptr);
-  ~__shared_ptr();
-public:
-  type &operator*() { return *ptr; }
-  type *operator->() { return ptr; }
-  type *release();
-  void reset();
-  void reset(type *pt);
-
-private:
-  type *ptr;
-};
-
-template <typename type>
-class shared_ptr : public __shared_ptr<type> {
-public:
-  shared_ptr();
-  shared_ptr(type *ptr);
-  shared_ptr(const shared_ptr<type> &t);
-  shared_ptr(shared_ptr<type> &&t);
-  ~shared_ptr();
-  shared_ptr &operator=(shared_ptr &&);
-  template <typename T>
-  shared_ptr &operator=(shared_ptr<T> &&);
-};
-
-}  // namespace std
+#include <memory>
diff --git 
a/clang-tools-extra/test/clang-tidy/checkers/modernize/Inputs/smart-ptr/unique_ptr.h
 
b/clang-tools-extra/test/clang-tidy/checkers/modernize/Inputs/smart-ptr/unique_ptr.h
index 5dc9e02b637a2..ef00360c87d72 100644
--- 
a/clang-tools-extra/test/clang-tidy/checkers/modernize/Inputs/smart-ptr/unique_ptr.h
+++ 
b/clang-tools-extra/test/clang-tidy/checkers/modernize/Inputs/smart-ptr/unique_ptr.h
@@ -1,28 +1 @@
-namespace std {
-
-template <typename T>
-class default_delete {};
-
-template <typename type, typename Deleter = std::default_delete<type>>
-class unique_ptr {
-public:
-  unique_ptr() {}
-  unique_ptr(type *ptr) {}
-  unique_ptr(const unique_ptr<type> &t) = delete;
-  unique_ptr(unique_ptr<type> &&t) {}
-  ~unique_ptr() {}
-  type &operator*() { return *ptr; }
-  type *operator->() { return ptr; }
-  type *release() { return ptr; }
-  void reset() {}
-  void reset(type *pt) {}
-  void reset(type pt) {}
-  unique_ptr &operator=(unique_ptr &&) { return *this; }
-  template <typename T>
-  unique_ptr &operator=(unique_ptr<T> &&) { return *this; }
-
-private:
-  type *ptr;
-};
-
-}  // namespace std
+#include <memory>
diff --git 
a/clang-tools-extra/test/clang-tidy/checkers/modernize/make-shared-header.cpp 
b/clang-tools-extra/test/clang-tidy/checkers/modernize/make-shared-header.cpp
index 0e95d070ae55e..65bf830fd3142 100644
--- 
a/clang-tools-extra/test/clang-tidy/checkers/modernize/make-shared-header.cpp
+++ 
b/clang-tools-extra/test/clang-tidy/checkers/modernize/make-shared-header.cpp
@@ -2,10 +2,9 @@
 // RUN:   -config="{CheckOptions: \
 // RUN:     {modernize-make-shared.MakeSmartPtrFunction: 'my::MakeShared', \
 // RUN:      modernize-make-shared.MakeSmartPtrFunctionHeader: 
'make_shared_util.h' \
-// RUN:     }}" \
-// RUN:   -- -I %S/Inputs/smart-ptr
+// RUN:     }}"
 
-#include "shared_ptr.h"
+#include <memory>
 // CHECK-FIXES: #include "make_shared_util.h"
 
 void f() {
diff --git 
a/clang-tools-extra/test/clang-tidy/checkers/modernize/make-unique-cxx11.cpp 
b/clang-tools-extra/test/clang-tidy/checkers/modernize/make-unique-cxx11.cpp
index e2944b8080c53..539943e7ba749 100644
--- a/clang-tools-extra/test/clang-tidy/checkers/modernize/make-unique-cxx11.cpp
+++ b/clang-tools-extra/test/clang-tidy/checkers/modernize/make-unique-cxx11.cpp
@@ -1,7 +1,7 @@
-// RUN: %check_clang_tidy -std=c++11 %s modernize-make-unique %t -- -- -I 
%S/Inputs/smart-ptr
+// RUN: %check_clang_tidy -std=c++11 %s modernize-make-unique %t
 
-#include "unique_ptr.h"
-// CHECK-FIXES: #include "unique_ptr.h"
+#include <memory>
+// CHECK-FIXES: #include <memory>
 
 void f() {
   auto my_ptr = std::unique_ptr<int>(new int(1));
diff --git 
a/clang-tools-extra/test/clang-tidy/checkers/modernize/make-unique-default-init.cpp
 
b/clang-tools-extra/test/clang-tidy/checkers/modernize/make-unique-default-init.cpp
index 50e7beda68a43..aec7189fb2b51 100644
--- 
a/clang-tools-extra/test/clang-tidy/checkers/modernize/make-unique-default-init.cpp
+++ 
b/clang-tools-extra/test/clang-tidy/checkers/modernize/make-unique-default-init.cpp
@@ -2,12 +2,10 @@
 // RUN:   -config="{CheckOptions: \
 // RUN:             {modernize-make-unique.IgnoreDefaultInitialization: \
 // RUN:              'false'}} \
-// RUN:             }" \
-// RUN:   -- -I %S/Inputs/smart-ptr
+// RUN:             }"
 
-#include "unique_ptr.h"
+#include <memory>
 #include <vector>
-// CHECK-FIXES: #include <memory>
 
 void basic() {
   std::unique_ptr<int> P1 = std::unique_ptr<int>(new int());
diff --git 
a/clang-tools-extra/test/clang-tidy/checkers/modernize/make-unique-header.cpp 
b/clang-tools-extra/test/clang-tidy/checkers/modernize/make-unique-header.cpp
index 5ffd9483a146a..d58f52c06194e 100644
--- 
a/clang-tools-extra/test/clang-tidy/checkers/modernize/make-unique-header.cpp
+++ 
b/clang-tools-extra/test/clang-tidy/checkers/modernize/make-unique-header.cpp
@@ -2,10 +2,9 @@
 // RUN:   -config="{CheckOptions: \
 // RUN:     {modernize-make-unique.MakeSmartPtrFunction: 'my::MakeUnique', \
 // RUN:      modernize-make-unique.MakeSmartPtrFunctionHeader: 
'make_unique_util.h' \
-// RUN:     }}" \
-// RUN:   -- -I %S/Inputs/smart-ptr
+// RUN:     }}"
 
-#include "unique_ptr.h"
+#include <memory>
 // CHECK-FIXES: #include "make_unique_util.h"
 
 void f() {
diff --git 
a/clang-tools-extra/test/clang-tidy/checkers/modernize/make-unique-macros.cpp 
b/clang-tools-extra/test/clang-tidy/checkers/modernize/make-unique-macros.cpp
index 78beb911f5a0a..e75daf9938c73 100644
--- 
a/clang-tools-extra/test/clang-tidy/checkers/modernize/make-unique-macros.cpp
+++ 
b/clang-tools-extra/test/clang-tidy/checkers/modernize/make-unique-macros.cpp
@@ -2,7 +2,7 @@
 // RUN:   -config="{CheckOptions: {modernize-make-unique.IgnoreMacros: 
false}}" \
 // RUN:   -- -I %S/Inputs/smart-ptr
 
-#include "unique_ptr.h"
+#include <memory>
 
 class Foo {};
 class Bar {};
diff --git 
a/clang-tools-extra/test/clang-tidy/checkers/modernize/replace-auto-ptr.cpp 
b/clang-tools-extra/test/clang-tidy/checkers/modernize/replace-auto-ptr.cpp
index 371f3ddf6d650..d1d70b788a789 100644
--- a/clang-tools-extra/test/clang-tidy/checkers/modernize/replace-auto-ptr.cpp
+++ b/clang-tools-extra/test/clang-tidy/checkers/modernize/replace-auto-ptr.cpp
@@ -2,7 +2,7 @@
 
 // CHECK-FIXES: #include <utility>
 
-#include "memory.h"
+#include <memory>
 
 // Instrumentation for auto_ptr_ref test.
 struct Base {};
diff --git 
a/clang-tools-extra/test/clang-tidy/checkers/modernize/use-emplace.cpp 
b/clang-tools-extra/test/clang-tidy/checkers/modernize/use-emplace.cpp
index 7d88c1be24747..bed5c88ed47d8 100644
--- a/clang-tools-extra/test/clang-tidy/checkers/modernize/use-emplace.cpp
+++ b/clang-tools-extra/test/clang-tidy/checkers/modernize/use-emplace.cpp
@@ -8,6 +8,7 @@
 // RUN:                '::std::make_pair; ::std::make_tuple; 
::test::MakeSingle'}}"
 
 #include <utility>
+#include <memory>
 
 namespace std {
 template <typename E>
@@ -313,12 +314,6 @@ tuple<typename remove_reference<Ts>::type...> 
make_tuple(Ts &&...) {
   return {};
 }
 
-template <typename T>
-class unique_ptr {
-public:
-  explicit unique_ptr(T *) {}
-  ~unique_ptr();
-};
 } // namespace std
 
 namespace llvm {
diff --git 
a/clang-tools-extra/test/clang-tidy/checkers/modernize/use-ranges.cpp 
b/clang-tools-extra/test/clang-tidy/checkers/modernize/use-ranges.cpp
index 21e6c32720163..80b054b74b49a 100644
--- a/clang-tools-extra/test/clang-tidy/checkers/modernize/use-ranges.cpp
+++ b/clang-tools-extra/test/clang-tidy/checkers/modernize/use-ranges.cpp
@@ -6,7 +6,7 @@
 // CHECK-FIXES: #include <ranges>
 
 #include "use-ranges/fake_std.h"
-#include "smart-ptr/unique_ptr.h"
+#include <memory>
 
 void Positives() {
   std::vector<int> I, J;
diff --git 
a/clang-tools-extra/test/clang-tidy/checkers/readability/ambiguous-smartptr-reset-call-custom-pointers.cpp
 
b/clang-tools-extra/test/clang-tidy/checkers/readability/ambiguous-smartptr-reset-call-custom-pointers.cpp
index df3f16a9cf9ec..679ba48c6d432 100644
--- 
a/clang-tools-extra/test/clang-tidy/checkers/readability/ambiguous-smartptr-reset-call-custom-pointers.cpp
+++ 
b/clang-tools-extra/test/clang-tidy/checkers/readability/ambiguous-smartptr-reset-call-custom-pointers.cpp
@@ -1,10 +1,9 @@
 // RUN: %check_clang_tidy %s readability-ambiguous-smartptr-reset-call %t -- \
 // RUN: -config='{CheckOptions: \
 // RUN:  {readability-ambiguous-smartptr-reset-call.SmartPointers: 
"::std::unique_ptr;::other_ptr"}}' \
-// RUN: --fix-notes -- -I %S/../modernize/Inputs/smart-ptr
+// RUN: --fix-notes
 
-#include "unique_ptr.h"
-#include "shared_ptr.h"
+#include <memory>
 
 template <typename T>
 struct other_ptr {
diff --git 
a/clang-tools-extra/test/clang-tidy/checkers/readability/ambiguous-smartptr-reset-call.cpp
 
b/clang-tools-extra/test/clang-tidy/checkers/readability/ambiguous-smartptr-reset-call.cpp
index e6e7eb9231ec2..1e7bfa0df5e38 100644
--- 
a/clang-tools-extra/test/clang-tidy/checkers/readability/ambiguous-smartptr-reset-call.cpp
+++ 
b/clang-tools-extra/test/clang-tidy/checkers/readability/ambiguous-smartptr-reset-call.cpp
@@ -1,7 +1,6 @@
-// RUN: %check_clang_tidy %s readability-ambiguous-smartptr-reset-call %t 
--fix-notes -- -I %S/../modernize/Inputs/smart-ptr
+// RUN: %check_clang_tidy %s readability-ambiguous-smartptr-reset-call %t 
--fix-notes
 
-#include "unique_ptr.h"
-#include "shared_ptr.h"
+#include <memory>
 
 template <typename T>
 struct non_default_reset_ptr {
diff --git 
a/clang-tools-extra/test/clang-tidy/checkers/readability/container-data-pointer.cpp
 
b/clang-tools-extra/test/clang-tidy/checkers/readability/container-data-pointer.cpp
index 70ade83eed0f0..9b176a50e2b73 100644
--- 
a/clang-tools-extra/test/clang-tidy/checkers/readability/container-data-pointer.cpp
+++ 
b/clang-tools-extra/test/clang-tidy/checkers/readability/container-data-pointer.cpp
@@ -4,6 +4,7 @@
 #include <string>
 #include <vector>
 #include <utility>
+#include <memory>
 
 typedef __SIZE_TYPE__ size_t;
 
@@ -16,12 +17,6 @@ template <>
 struct is_integral<size_t> {
   static const bool value = true;
 };
-
-template <typename T>
-struct unique_ptr {
-  T &operator*() const;
-  T *operator->() const;
-};
 }
 
 template <typename T>
diff --git 
a/clang-tools-extra/test/clang-tidy/checkers/readability/container-size-empty.cpp
 
b/clang-tools-extra/test/clang-tidy/checkers/readability/container-size-empty.cpp
index 93dc00845290d..d6519151561b7 100644
--- 
a/clang-tools-extra/test/clang-tidy/checkers/readability/container-size-empty.cpp
+++ 
b/clang-tools-extra/test/clang-tidy/checkers/readability/container-size-empty.cpp
@@ -682,14 +682,6 @@ void instantiator() {
   instantiatedTemplateWithSizeCall<std::vector<int>>();
 }
 
-namespace std {
-template <typename T>
-struct unique_ptr {
-  T *operator->() const;
-  T &operator*() const;
-};
-} // namespace std
-
 bool call_through_unique_ptr(const std::unique_ptr<std::vector<int>> &ptr) {
   return ptr->size() > 0;
   // CHECK-MESSAGES: :[[@LINE-1]]:10: warning: the 'empty' method should be 
used
diff --git 
a/clang-tools-extra/test/clang-tidy/checkers/readability/redundant-smartptr-get-macros.cpp
 
b/clang-tools-extra/test/clang-tidy/checkers/readability/redundant-smartptr-get-macros.cpp
index 4c8bb84414355..05b52a67bfc87 100644
--- 
a/clang-tools-extra/test/clang-tidy/checkers/readability/redundant-smartptr-get-macros.cpp
+++ 
b/clang-tools-extra/test/clang-tidy/checkers/readability/redundant-smartptr-get-macros.cpp
@@ -1,17 +1,7 @@
 // RUN: %check_clang_tidy %s readability-redundant-smartptr-get %t -- \
 // RUN:   -config="{CheckOptions: 
{readability-redundant-smartptr-get.IgnoreMacros: false}}"
 
-namespace std {
-
-template <typename T>
-struct shared_ptr {
-  T &operator*() const;
-  T *operator->() const;
-  T *get() const;
-  explicit operator bool() const noexcept;
-};
-
-} // namespace std
+#include <memory>
 
 #define MACRO(p) p.get()
 
diff --git 
a/clang-tools-extra/test/clang-tidy/checkers/readability/redundant-smartptr-get.cpp
 
b/clang-tools-extra/test/clang-tidy/checkers/readability/redundant-smartptr-get.cpp
index 2d88281eb8524..b74d28f4873bb 100644
--- 
a/clang-tools-extra/test/clang-tidy/checkers/readability/redundant-smartptr-get.cpp
+++ 
b/clang-tools-extra/test/clang-tidy/checkers/readability/redundant-smartptr-get.cpp
@@ -1,42 +1,9 @@
 // RUN: %check_clang_tidy %s readability-redundant-smartptr-get %t
 #include <vector>
+#include <memory>
 
 #define NULL __null
 
-namespace std {
-
-template <typename T>
-struct unique_ptr {
-  T& operator*() const;
-  T* operator->() const;
-  T* get() const;
-  explicit operator bool() const noexcept;
-};
-
-template <typename T>
-struct unique_ptr<T[]> {
-  T& operator[](unsigned) const;
-  T* get() const;
-  explicit operator bool() const noexcept;
-};
-
-template <typename T>
-struct shared_ptr {
-  T& operator*() const;
-  T* operator->() const;
-  T* get() const;
-  explicit operator bool() const noexcept;
-};
-
-template <typename T>
-struct shared_ptr<T[]> {
-  T& operator[](unsigned) const;
-  T* get() const;
-  explicit operator bool() const noexcept;
-};
-
-}  // namespace std
-
 struct Bar {
   void Do();
   void ConstDo() const;
diff --git 
a/clang-tools-extra/test/clang-tidy/checkers/readability/uniqueptr-delete-release.cpp
 
b/clang-tools-extra/test/clang-tidy/checkers/readability/uniqueptr-delete-release.cpp
index b4695394f6be8..0742b970e7729 100644
--- 
a/clang-tools-extra/test/clang-tidy/checkers/readability/uniqueptr-delete-release.cpp
+++ 
b/clang-tools-extra/test/clang-tidy/checkers/readability/uniqueptr-delete-release.cpp
@@ -1,24 +1,8 @@
 // RUN: %check_clang_tidy %s readability-uniqueptr-delete-release %t 
-check-suffix=NULLPTR
 // RUN: %check_clang_tidy %s readability-uniqueptr-delete-release %t 
-check-suffix=RESET -config='{ \
 // RUN: CheckOptions: {readability-uniqueptr-delete-release.PreferResetCall: 
true}}'
-namespace std {
-template <typename T>
-struct default_delete {};
-
-template <typename T, typename D = default_delete<T>>
-class unique_ptr {
- public:
-  unique_ptr();
-  ~unique_ptr();
-  explicit unique_ptr(T*);
-  template <typename U, typename E>
-  unique_ptr(unique_ptr<U, E>&&);
-  T* release();
-  void reset(T *P = nullptr);
-  T &operator*() const;
-  T *operator->() const;
-};
-}  // namespace std
+
+#include <memory>
 
 std::unique_ptr<int>& ReturnsAUnique();
 
@@ -30,7 +14,7 @@ void Positives() {
   // CHECK-FIXES-NULLPTR: P = nullptr;
   // CHECK-FIXES-RESET: P.reset();
 
-  auto P2 = P;
+  auto &P2 = P;
   delete P2.release();
   // CHECK-MESSAGES-NULLPTR: :[[@LINE-1]]:3: warning: prefer '= nullptr' to 
reset 'unique_ptr<>' objects
   // CHECK-MESSAGES-RESET: :[[@LINE-2]]:3: warning: prefer 'reset()' to reset 
'unique_ptr<>' objects

>From b462682c7c99ed8b28ed4895f71e138c3e14d93e Mon Sep 17 00:00:00 2001
From: Victor Baranov <[email protected]>
Date: Sun, 15 Mar 2026 13:00:08 +0300
Subject: [PATCH 2/2] fix commets

---
 .../test/clang-tidy/checkers/modernize/replace-auto-ptr.cpp     | 2 +-
 .../clang-tidy/checkers/readability/container-size-empty.cpp    | 1 +
 2 files changed, 2 insertions(+), 1 deletion(-)

diff --git 
a/clang-tools-extra/test/clang-tidy/checkers/modernize/replace-auto-ptr.cpp 
b/clang-tools-extra/test/clang-tidy/checkers/modernize/replace-auto-ptr.cpp
index d1d70b788a789..68c961d92d2dd 100644
--- a/clang-tools-extra/test/clang-tidy/checkers/modernize/replace-auto-ptr.cpp
+++ b/clang-tools-extra/test/clang-tidy/checkers/modernize/replace-auto-ptr.cpp
@@ -1,4 +1,4 @@
-// RUN: %check_clang_tidy %s modernize-replace-auto-ptr %t -- -- -isystem 
%S/Inputs/replace-auto-ptr
+// RUN: %check_clang_tidy %s modernize-replace-auto-ptr %t
 
 // CHECK-FIXES: #include <utility>
 
diff --git 
a/clang-tools-extra/test/clang-tidy/checkers/readability/container-size-empty.cpp
 
b/clang-tools-extra/test/clang-tidy/checkers/readability/container-size-empty.cpp
index d6519151561b7..2b8b3261ac765 100644
--- 
a/clang-tools-extra/test/clang-tidy/checkers/readability/container-size-empty.cpp
+++ 
b/clang-tools-extra/test/clang-tidy/checkers/readability/container-size-empty.cpp
@@ -2,6 +2,7 @@
 // RUN: -config="{CheckOptions: 
{readability-container-size-empty.ExcludedComparisonTypes: 
'::std::array;::IgnoredDummyType'}}" \
 // RUN: -- -fno-delayed-template-parsing
 #include <string>
+#include <memory>
 
 namespace std {
 template <typename T> struct vector {

_______________________________________________
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to