[clang-tools-extra] [clang-tidy][NFC] Use universal utility mock in testcases [1/N] (PR #185431)
via cfe-commits
cfe-commits at lists.llvm.org
Mon Mar 9 18:42:14 PDT 2026
https://github.com/zeyi2 updated https://github.com/llvm/llvm-project/pull/185431
>From 388033d637a762e1e50c085434b4b3533bf7ff34 Mon Sep 17 00:00:00 2001
From: mtx <mitchell.xu2 at gmail.com>
Date: Mon, 9 Mar 2026 22:37:41 +0800
Subject: [PATCH 1/3] [clang-tidy][NFC] Use universal utility mock in testcases
[1/N]
---
.../checkers/Inputs/Headers/utility | 56 +++++++++++++++
.../forwarding-reference-overload.cpp | 70 +++++++------------
.../bugprone/move-forwarding-reference.cpp | 16 +----
.../bugprone/unhandled-self-assignment.cpp | 12 +---
.../checkers/bugprone/use-after-move.cpp | 42 ++---------
.../missing-std-forward-custom-function.cpp | 16 +----
.../missing-std-forward-cxx23.cpp | 22 +-----
.../cppcoreguidelines/missing-std-forward.cpp | 16 +----
...erence-param-not-moved-custom-function.cpp | 19 +----
.../rvalue-reference-param-not-moved.cpp | 27 ++-----
.../checkers/performance/for-range-copy.cpp | 18 +----
.../performance/move-const-arg-const-ref.cpp | 36 +---------
.../move-const-arg-trivially-copyable.cpp | 24 +------
.../checkers/performance/move-const-arg.cpp | 34 +--------
.../performance/move-constructor-init.cpp | 21 ++----
.../checkers/performance/use-std-move.cpp | 10 +--
16 files changed, 122 insertions(+), 317 deletions(-)
diff --git a/clang-tools-extra/test/clang-tidy/checkers/Inputs/Headers/utility b/clang-tools-extra/test/clang-tidy/checkers/Inputs/Headers/utility
index 30e170b5decc1..67b9fa248558d 100644
--- a/clang-tools-extra/test/clang-tidy/checkers/Inputs/Headers/utility
+++ b/clang-tools-extra/test/clang-tidy/checkers/Inputs/Headers/utility
@@ -2,6 +2,10 @@
#define _UTILITY_
namespace std {
+
+typedef __SIZE_TYPE__ size_t;
+typedef decltype(nullptr) nullptr_t;
+
template <typename T>
struct remove_reference { typedef T type; };
template <typename T>
@@ -9,10 +13,62 @@ struct remove_reference<T &> { typedef T type; };
template <typename T>
struct remove_reference<T &&> { typedef T type; };
+template <typename T>
+using remove_reference_t = typename remove_reference<T>::type;
+
template <typename _Tp>
constexpr typename std::remove_reference<_Tp>::type &&move(_Tp &&__t) {
return static_cast<typename std::remove_reference<_Tp>::type &&>(__t);
}
+
+template <typename T>
+constexpr T &&forward(remove_reference_t<T> &t) noexcept {
+ return static_cast<T &&>(t);
+}
+
+template <typename T>
+constexpr T &&forward(remove_reference_t<T> &&t) noexcept {
+ return static_cast<T &&>(t);
+}
+
+template <typename T>
+void swap(T &a, T &b) {
+ T tmp = move(a);
+ a = move(b);
+ b = move(tmp);
+}
+
+template <class T, class U>
+struct is_same { static constexpr bool value = false; };
+template <class T>
+struct is_same<T, T> { static constexpr bool value = true; };
+template <class T, class U>
+constexpr bool is_same_v = is_same<T, U>::value;
+
+template <bool B, class T = void>
+struct enable_if {};
+template <class T>
+struct enable_if<true, T> { typedef T type; };
+template <bool B, class T = void>
+using enable_if_t = typename enable_if<B, T>::type;
+
+template <class T> struct remove_cv { using type = T; };
+template <class T> struct remove_cv<const T> { using type = T; };
+template <class T> struct remove_cv<volatile T> { using type = T; };
+template <class T> struct remove_cv<const volatile T> { using type = T; };
+template <class T> using remove_cv_t = typename remove_cv<T>::type;
+
+template <class T> struct remove_cvref { using type = remove_cv_t<remove_reference_t<T>>; };
+template <class T> using remove_cvref_t = typename remove_cvref<T>::type;
+
+#if __cplusplus >= 202002L
+template <class T, class U>
+concept derived_from = true;
+
+template <class T>
+concept integral = true;
+#endif
+
} // namespace std
#endif // _UTILITY_
diff --git a/clang-tools-extra/test/clang-tidy/checkers/bugprone/forwarding-reference-overload.cpp b/clang-tools-extra/test/clang-tidy/checkers/bugprone/forwarding-reference-overload.cpp
index 27315199c7eba..587658c5d156f 100644
--- a/clang-tools-extra/test/clang-tidy/checkers/bugprone/forwarding-reference-overload.cpp
+++ b/clang-tools-extra/test/clang-tidy/checkers/bugprone/forwarding-reference-overload.cpp
@@ -1,13 +1,8 @@
-// RUN: %check_clang_tidy %s bugprone-forwarding-reference-overload %t
+// RUN: %check_clang_tidy %s bugprone-forwarding-reference-overload %t -- -- -isystem %clang_tidy_headers
-namespace std {
-template <bool B, class T = void> struct enable_if { typedef T type; };
-
-template <class T> struct enable_if<true, T> { typedef T type; };
-
-template <bool B, class T = void>
-using enable_if_t = typename enable_if<B, T>::type;
+#include <utility>
+namespace std {
template <class T> struct enable_if_nice { typedef T type; };
} // namespace std
@@ -20,30 +15,30 @@ template <typename T> constexpr bool just_true = true;
class Test1 {
public:
template <typename T> Test1(T &&n);
- // CHECK-NOTES: [[@LINE-1]]:25: warning: constructor accepting a forwarding reference can hide the copy and move constructors [bugprone-forwarding-reference-overload]
- // CHECK-NOTES: 48:3: note: copy constructor declared here
- // CHECK-NOTES: 49:3: note: copy constructor declared here
- // CHECK-NOTES: 50:3: note: move constructor declared here
+ // CHECK-NOTES: :[[@LINE-1]]:25: warning: constructor accepting a forwarding reference can hide the copy and move constructors [bugprone-forwarding-reference-overload]
+ // CHECK-NOTES: :[[@LINE+24]]:3: note: copy constructor declared here
+ // CHECK-NOTES: :[[@LINE+24]]:3: note: copy constructor declared here
+ // CHECK-NOTES: :[[@LINE+24]]:3: note: move constructor declared here
template <typename T> Test1(T &&n, int i = 5, ...);
// CHECK-NOTES: :[[@LINE-1]]:25: warning: constructor accepting a forwarding reference can hide the copy and move constructors
- // CHECK-NOTES: 48:3: note: copy constructor declared here
- // CHECK-NOTES: 49:3: note: copy constructor declared here
- // CHECK-NOTES: 50:3: note: move constructor declared here
+ // CHECK-NOTES: :[[@LINE+18]]:3: note: copy constructor declared here
+ // CHECK-NOTES: :[[@LINE+18]]:3: note: copy constructor declared here
+ // CHECK-NOTES: :[[@LINE+18]]:3: note: move constructor declared here
template <typename T, typename U = typename std::enable_if_nice<T>::type>
Test1(T &&n);
// CHECK-NOTES: :[[@LINE-1]]:3: warning: constructor accepting a forwarding reference can hide the copy and move constructors
- // CHECK-NOTES: 48:3: note: copy constructor declared here
- // CHECK-NOTES: 49:3: note: copy constructor declared here
- // CHECK-NOTES: 50:3: note: move constructor declared here
+ // CHECK-NOTES: :[[@LINE+11]]:3: note: copy constructor declared here
+ // CHECK-NOTES: :[[@LINE+11]]:3: note: copy constructor declared here
+ // CHECK-NOTES: :[[@LINE+11]]:3: note: move constructor declared here
template <typename T>
Test1(T &&n, typename foo::enable_if<long>::type i = 5, ...);
// CHECK-NOTES: :[[@LINE-1]]:3: warning: constructor accepting a forwarding reference can hide the copy and move constructors
- // CHECK-NOTES: 48:3: note: copy constructor declared here
- // CHECK-NOTES: 49:3: note: copy constructor declared here
- // CHECK-NOTES: 50:3: note: move constructor declared here
+ // CHECK-NOTES: :[[@LINE+4]]:3: note: copy constructor declared here
+ // CHECK-NOTES: :[[@LINE+4]]:3: note: copy constructor declared here
+ // CHECK-NOTES: :[[@LINE+4]]:3: note: move constructor declared here
Test1(const Test1 &other) {}
Test1(Test1 &other) {}
@@ -151,23 +146,6 @@ class variant {
// CHECK-NOTES: :[[@LINE-1]]:13: warning: constructor accepting a forwarding reference can hide the copy and move constructors
};
-namespace std {
-template <class T, class U> struct is_same { static constexpr bool value = false; };
-template <class T> struct is_same<T, T> { static constexpr bool value = true; };
-template <class T, class U> constexpr bool is_same_v = is_same<T, U>::value;
-template <class T> struct remove_reference { using type = T; };
-template <class T> struct remove_reference<T&> { using type = T; };
-template <class T> struct remove_reference<T&&> { using type = T; };
-template <class T> using remove_reference_t = typename remove_reference<T>::type;
-template <class T> struct remove_cv { using type = T; };
-template <class T> struct remove_cv<const T> { using type = T; };
-template <class T> struct remove_cv<volatile T> { using type = T; };
-template <class T> struct remove_cv<const volatile T> { using type = T; };
-template <class T> using remove_cv_t = typename remove_cv<T>::type;
-template <class T> struct remove_cvref { using type = remove_cv_t<remove_reference_t<T>>; };
-template <class T> using remove_cvref_t = typename remove_cvref<T>::type;
-} // namespace std
-
// Handle enable_if when used as a non-type template parameter.
class Test7 {
public:
@@ -210,32 +188,32 @@ class Test9 {
std::enable_if_t<std::is_same_v<std::remove_cvref_t<T>, bool>, int>>
Test9(T &&t);
// CHECK-NOTES: :[[@LINE-1]]:3: warning: constructor accepting a forwarding reference can hide the copy and move constructors
- // CHECK-NOTES: 240:3: note: copy constructor declared here
- // CHECK-NOTES: 241:3: note: move constructor declared here
+ // CHECK-NOTES: :[[@LINE+27]]:3: note: copy constructor declared here
+ // CHECK-NOTES: :[[@LINE+27]]:3: note: move constructor declared here
// Requires a default argument (such as a literal, implicit cast expression, etc.)
template <class T,
std::enable_if_t<std::is_same_v<std::remove_cvref_t<T>, long>>*>
Test9(T &&t);
// CHECK-NOTES: :[[@LINE-1]]:3: warning: constructor accepting a forwarding reference can hide the copy and move constructors
- // CHECK-NOTES: 240:3: note: copy constructor declared here
- // CHECK-NOTES: 241:3: note: move constructor declared here
+ // CHECK-NOTES: :[[@LINE+19]]:3: note: copy constructor declared here
+ // CHECK-NOTES: :[[@LINE+19]]:3: note: move constructor declared here
// Only std::enable_if or std::enable_if_t are supported
template <class T,
typename std::enable_if_nice<T>::type* = nullptr>
Test9(T &&t);
// CHECK-NOTES: :[[@LINE-1]]:3: warning: constructor accepting a forwarding reference can hide the copy and move constructors
- // CHECK-NOTES: 240:3: note: copy constructor declared here
- // CHECK-NOTES: 241:3: note: move constructor declared here
+ // CHECK-NOTES: :[[@LINE+11]]:3: note: copy constructor declared here
+ // CHECK-NOTES: :[[@LINE+11]]:3: note: move constructor declared here
// Only std::enable_if or std::enable_if_t are supported
template <class T,
typename foo::enable_if<T>::type = 0>
Test9(T &&t);
// CHECK-NOTES: :[[@LINE-1]]:3: warning: constructor accepting a forwarding reference can hide the copy and move constructors
- // CHECK-NOTES: 240:3: note: copy constructor declared here
- // CHECK-NOTES: 241:3: note: move constructor declared here
+ // CHECK-NOTES: :[[@LINE+3]]:3: note: copy constructor declared here
+ // CHECK-NOTES: :[[@LINE+3]]:3: note: move constructor declared here
Test9(const Test9 &other) = default;
Test9(Test9 &&other) = default;
diff --git a/clang-tools-extra/test/clang-tidy/checkers/bugprone/move-forwarding-reference.cpp b/clang-tools-extra/test/clang-tidy/checkers/bugprone/move-forwarding-reference.cpp
index 9f453678d1d19..14331b6d98a7f 100644
--- a/clang-tools-extra/test/clang-tidy/checkers/bugprone/move-forwarding-reference.cpp
+++ b/clang-tools-extra/test/clang-tidy/checkers/bugprone/move-forwarding-reference.cpp
@@ -1,18 +1,6 @@
-// RUN: %check_clang_tidy -std=c++14-or-later %s bugprone-move-forwarding-reference %t -- -- -fno-delayed-template-parsing
+// RUN: %check_clang_tidy -std=c++14-or-later %s bugprone-move-forwarding-reference %t -- -- -isystem %clang_tidy_headers -fno-delayed-template-parsing
-namespace std {
-template <typename> struct remove_reference;
-
-template <typename _Tp> struct remove_reference { typedef _Tp type; };
-
-template <typename _Tp> struct remove_reference<_Tp &> { typedef _Tp type; };
-
-template <typename _Tp> struct remove_reference<_Tp &&> { typedef _Tp type; };
-
-template <typename _Tp>
-constexpr typename std::remove_reference<_Tp>::type &&move(_Tp &&__t);
-
-} // namespace std
+#include <utility>
// Standard case.
template <typename T, typename U> void f1(U &&SomeU) {
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 c2a8ddc08d330..b0f97c6276e58 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,14 +1,8 @@
-// RUN: %check_clang_tidy %s bugprone-unhandled-self-assignment %t -- -- -fno-delayed-template-parsing
+// RUN: %check_clang_tidy %s bugprone-unhandled-self-assignment %t -- -- -isystem %clang_tidy_headers -fno-delayed-template-parsing
-namespace std {
-
-template <class T>
-void swap(T &x, T &y) {
-}
+#include <utility>
-template <class T>
-T &&move(T &x) {
-}
+namespace std {
template <typename T> class default_delete {};
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 fd6a3961ba43b..c9c5324ab1c00 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
@@ -2,19 +2,20 @@
// RUN: -config='{CheckOptions: { \
// RUN: bugprone-use-after-move.InvalidationFunctions: "::Database<>::StaticCloseConnection;Database<>::CloseConnection;FriendCloseConnection;FreeCloseConnection", \
// RUN: bugprone-use-after-move.ReinitializationFunctions: "::Database<>::Reset;::Database<>::StaticReset;::FriendReset;::RegularReset" \
-// RUN: }}' -- \
+// RUN: }}' -- -isystem %clang_tidy_headers \
// RUN: -fno-delayed-template-parsing
// RUN: %check_clang_tidy -std=c++17-or-later %s bugprone-use-after-move %t -- \
// RUN: -config='{CheckOptions: { \
// RUN: bugprone-use-after-move.InvalidationFunctions: "::Database<>::StaticCloseConnection;Database<>::CloseConnection;FriendCloseConnection;FreeCloseConnection", \
// RUN: bugprone-use-after-move.ReinitializationFunctions: "::Database<>::Reset;::Database<>::StaticReset;::FriendReset;::RegularReset" \
-// RUN: }}' -- \
+// RUN: }}' -- -isystem %clang_tidy_headers \
// RUN: -fno-delayed-template-parsing
+#include <utility>
+
typedef decltype(nullptr) nullptr_t;
namespace std {
-typedef unsigned size_t;
template <typename T>
struct unique_ptr {
@@ -112,41 +113,6 @@ DECLARE_STANDARD_CONTAINER(unordered_multimap);
typedef basic_string<char> string;
-template <typename>
-struct remove_reference;
-
-template <typename _Tp>
-struct remove_reference {
- typedef _Tp type;
-};
-
-template <typename _Tp>
-struct remove_reference<_Tp &> {
- typedef _Tp type;
-};
-
-template <typename _Tp>
-struct remove_reference<_Tp &&> {
- typedef _Tp type;
-};
-
-template <typename _Tp>
-constexpr typename std::remove_reference<_Tp>::type &&move(_Tp &&__t) noexcept {
- return static_cast<typename remove_reference<_Tp>::type &&>(__t);
-}
-
-template <class _Tp>
-constexpr _Tp&&
-forward(typename std::remove_reference<_Tp>::type& __t) noexcept {
- return static_cast<_Tp&&>(__t);
-}
-
-template <class _Tp>
-constexpr _Tp&&
-forward(typename std::remove_reference<_Tp>::type&& __t) noexcept {
- return static_cast<_Tp&&>(__t);
-}
-
} // namespace std
class A {
diff --git a/clang-tools-extra/test/clang-tidy/checkers/cppcoreguidelines/missing-std-forward-custom-function.cpp b/clang-tools-extra/test/clang-tidy/checkers/cppcoreguidelines/missing-std-forward-custom-function.cpp
index deab545eb39a3..c9c6076548a10 100644
--- a/clang-tools-extra/test/clang-tidy/checkers/cppcoreguidelines/missing-std-forward-custom-function.cpp
+++ b/clang-tools-extra/test/clang-tidy/checkers/cppcoreguidelines/missing-std-forward-custom-function.cpp
@@ -1,20 +1,8 @@
// RUN: %check_clang_tidy -std=c++14-or-later %s cppcoreguidelines-missing-std-forward %t -- \
-// RUN: -config="{CheckOptions: {cppcoreguidelines-missing-std-forward.ForwardFunction: custom_forward}}" -- -fno-delayed-template-parsing
+// RUN: -config="{CheckOptions: {cppcoreguidelines-missing-std-forward.ForwardFunction: custom_forward}}" -- -isystem %clang_tidy_headers -fno-delayed-template-parsing
// NOLINTBEGIN
-namespace std {
-
-template <typename T> struct remove_reference { using type = T; };
-template <typename T> struct remove_reference<T&> { using type = T; };
-template <typename T> struct remove_reference<T&&> { using type = T; };
-
-template <typename T> using remove_reference_t = typename remove_reference<T>::type;
-
-template <typename T> constexpr T &&forward(remove_reference_t<T> &t) noexcept;
-template <typename T> constexpr T &&forward(remove_reference_t<T> &&t) noexcept;
-template <typename T> constexpr remove_reference_t<T> &&move(T &&x);
-
-} // namespace std
+#include <utility>
// NOLINTEND
template<class T>
diff --git a/clang-tools-extra/test/clang-tidy/checkers/cppcoreguidelines/missing-std-forward-cxx23.cpp b/clang-tools-extra/test/clang-tidy/checkers/cppcoreguidelines/missing-std-forward-cxx23.cpp
index 723b7893673a1..60dc57146d6de 100644
--- a/clang-tools-extra/test/clang-tidy/checkers/cppcoreguidelines/missing-std-forward-cxx23.cpp
+++ b/clang-tools-extra/test/clang-tidy/checkers/cppcoreguidelines/missing-std-forward-cxx23.cpp
@@ -1,25 +1,7 @@
-// RUN: %check_clang_tidy -std=c++23-or-later %s cppcoreguidelines-missing-std-forward %t -- -- -fno-delayed-template-parsing
+// RUN: %check_clang_tidy -std=c++23-or-later %s cppcoreguidelines-missing-std-forward %t -- -- -isystem %clang_tidy_headers -fno-delayed-template-parsing
// NOLINTBEGIN
-namespace std {
-
-template <typename T> struct remove_reference { using type = T; };
-template <typename T> struct remove_reference<T&> { using type = T; };
-template <typename T> struct remove_reference<T&&> { using type = T; };
-
-template <typename T> using remove_reference_t = typename remove_reference<T>::type;
-
-template <typename T> constexpr T &&forward(remove_reference_t<T> &t) noexcept;
-template <typename T> constexpr T &&forward(remove_reference_t<T> &&t) noexcept;
-template <typename T> constexpr remove_reference_t<T> &&move(T &&x);
-
-template <class T, class U>
-concept derived_from = true;
-
-template <class T>
-concept integral = true;
-
-} // namespace std
+#include <utility>
// NOLINTEND
// Tests for constrained explicit object parameters (GH#180362).
diff --git a/clang-tools-extra/test/clang-tidy/checkers/cppcoreguidelines/missing-std-forward.cpp b/clang-tools-extra/test/clang-tidy/checkers/cppcoreguidelines/missing-std-forward.cpp
index 98c592db7ce22..970e3bc4d8042 100644
--- a/clang-tools-extra/test/clang-tidy/checkers/cppcoreguidelines/missing-std-forward.cpp
+++ b/clang-tools-extra/test/clang-tidy/checkers/cppcoreguidelines/missing-std-forward.cpp
@@ -1,19 +1,7 @@
-// RUN: %check_clang_tidy %s cppcoreguidelines-missing-std-forward %t -- -- -fno-delayed-template-parsing
+// RUN: %check_clang_tidy %s cppcoreguidelines-missing-std-forward %t -- -- -isystem %clang_tidy_headers -fno-delayed-template-parsing
// NOLINTBEGIN
-namespace std {
-
-template <typename T> struct remove_reference { using type = T; };
-template <typename T> struct remove_reference<T&> { using type = T; };
-template <typename T> struct remove_reference<T&&> { using type = T; };
-
-template <typename T> using remove_reference_t = typename remove_reference<T>::type;
-
-template <typename T> constexpr T &&forward(remove_reference_t<T> &t) noexcept;
-template <typename T> constexpr T &&forward(remove_reference_t<T> &&t) noexcept;
-template <typename T> constexpr remove_reference_t<T> &&move(T &&x);
-
-} // namespace std
+#include <utility>
// NOLINTEND
struct S {
diff --git a/clang-tools-extra/test/clang-tidy/checkers/cppcoreguidelines/rvalue-reference-param-not-moved-custom-function.cpp b/clang-tools-extra/test/clang-tidy/checkers/cppcoreguidelines/rvalue-reference-param-not-moved-custom-function.cpp
index db32ff6ef9bf3..d51006475ac1f 100644
--- a/clang-tools-extra/test/clang-tidy/checkers/cppcoreguidelines/rvalue-reference-param-not-moved-custom-function.cpp
+++ b/clang-tools-extra/test/clang-tidy/checkers/cppcoreguidelines/rvalue-reference-param-not-moved-custom-function.cpp
@@ -1,23 +1,8 @@
// RUN: %check_clang_tidy -std=c++11-or-later %s cppcoreguidelines-rvalue-reference-param-not-moved %t -- \
-// RUN: -config="{CheckOptions: {cppcoreguidelines-rvalue-reference-param-not-moved.AllowPartialMove: true, cppcoreguidelines-rvalue-reference-param-not-moved.IgnoreUnnamedParams: true, cppcoreguidelines-rvalue-reference-param-not-moved.IgnoreNonDeducedTemplateTypes: true, cppcoreguidelines-rvalue-reference-param-not-moved.MoveFunction: custom_move}}" -- -fno-delayed-template-parsing
+// RUN: -config="{CheckOptions: {cppcoreguidelines-rvalue-reference-param-not-moved.AllowPartialMove: true, cppcoreguidelines-rvalue-reference-param-not-moved.IgnoreUnnamedParams: true, cppcoreguidelines-rvalue-reference-param-not-moved.IgnoreNonDeducedTemplateTypes: true, cppcoreguidelines-rvalue-reference-param-not-moved.MoveFunction: custom_move}}" -- -isystem %clang_tidy_headers -fno-delayed-template-parsing
// NOLINTBEGIN
-namespace std {
-template <typename>
-struct remove_reference;
-
-template <typename _Tp> struct remove_reference { typedef _Tp type; };
-template <typename _Tp> struct remove_reference<_Tp&> { typedef _Tp type; };
-template <typename _Tp> struct remove_reference<_Tp&&> { typedef _Tp type; };
-
-template <typename _Tp>
-constexpr typename std::remove_reference<_Tp>::type &&move(_Tp &&__t) noexcept;
-
-template <typename _Tp>
-constexpr _Tp &&
-forward(typename remove_reference<_Tp>::type &__t) noexcept;
-
-}
+#include <utility>
// NOLINTEND
diff --git a/clang-tools-extra/test/clang-tidy/checkers/cppcoreguidelines/rvalue-reference-param-not-moved.cpp b/clang-tools-extra/test/clang-tidy/checkers/cppcoreguidelines/rvalue-reference-param-not-moved.cpp
index 4e64ea11d3cb4..d6b22386d428d 100644
--- a/clang-tools-extra/test/clang-tidy/checkers/cppcoreguidelines/rvalue-reference-param-not-moved.cpp
+++ b/clang-tools-extra/test/clang-tidy/checkers/cppcoreguidelines/rvalue-reference-param-not-moved.cpp
@@ -1,31 +1,16 @@
// RUN: %check_clang_tidy -std=c++11 %s cppcoreguidelines-rvalue-reference-param-not-moved %t -- \
-// RUN: -config="{CheckOptions: {cppcoreguidelines-rvalue-reference-param-not-moved.AllowPartialMove: true, cppcoreguidelines-rvalue-reference-param-not-moved.IgnoreUnnamedParams: true, cppcoreguidelines-rvalue-reference-param-not-moved.IgnoreNonDeducedTemplateTypes: true}}" -- -fno-delayed-template-parsing
+// RUN: -config="{CheckOptions: {cppcoreguidelines-rvalue-reference-param-not-moved.AllowPartialMove: true, cppcoreguidelines-rvalue-reference-param-not-moved.IgnoreUnnamedParams: true, cppcoreguidelines-rvalue-reference-param-not-moved.IgnoreNonDeducedTemplateTypes: true}}" -- -isystem %clang_tidy_headers -fno-delayed-template-parsing
// RUN: %check_clang_tidy -check-suffix=,CXX14 -std=c++14-or-later %s cppcoreguidelines-rvalue-reference-param-not-moved %t -- \
-// RUN: -config="{CheckOptions: {cppcoreguidelines-rvalue-reference-param-not-moved.AllowPartialMove: true, cppcoreguidelines-rvalue-reference-param-not-moved.IgnoreUnnamedParams: true, cppcoreguidelines-rvalue-reference-param-not-moved.IgnoreNonDeducedTemplateTypes: true}}" -- -fno-delayed-template-parsing
+// RUN: -config="{CheckOptions: {cppcoreguidelines-rvalue-reference-param-not-moved.AllowPartialMove: true, cppcoreguidelines-rvalue-reference-param-not-moved.IgnoreUnnamedParams: true, cppcoreguidelines-rvalue-reference-param-not-moved.IgnoreNonDeducedTemplateTypes: true}}" -- -isystem %clang_tidy_headers -fno-delayed-template-parsing
// RUN: %check_clang_tidy -check-suffix=,NOSUBEXPR -std=c++11 %s cppcoreguidelines-rvalue-reference-param-not-moved %t -- \
-// RUN: -config="{CheckOptions: {cppcoreguidelines-rvalue-reference-param-not-moved.AllowPartialMove: false, cppcoreguidelines-rvalue-reference-param-not-moved.IgnoreUnnamedParams: true, cppcoreguidelines-rvalue-reference-param-not-moved.IgnoreNonDeducedTemplateTypes: true}}" -- -fno-delayed-template-parsing
+// RUN: -config="{CheckOptions: {cppcoreguidelines-rvalue-reference-param-not-moved.AllowPartialMove: false, cppcoreguidelines-rvalue-reference-param-not-moved.IgnoreUnnamedParams: true, cppcoreguidelines-rvalue-reference-param-not-moved.IgnoreNonDeducedTemplateTypes: true}}" -- -isystem %clang_tidy_headers -fno-delayed-template-parsing
// RUN: %check_clang_tidy -check-suffix=,UNNAMED -std=c++11 %s cppcoreguidelines-rvalue-reference-param-not-moved %t -- \
-// RUN: -config="{CheckOptions: {cppcoreguidelines-rvalue-reference-param-not-moved.AllowPartialMove: true, cppcoreguidelines-rvalue-reference-param-not-moved.IgnoreUnnamedParams: false, cppcoreguidelines-rvalue-reference-param-not-moved.IgnoreNonDeducedTemplateTypes: true}}" -- -fno-delayed-template-parsing
+// RUN: -config="{CheckOptions: {cppcoreguidelines-rvalue-reference-param-not-moved.AllowPartialMove: true, cppcoreguidelines-rvalue-reference-param-not-moved.IgnoreUnnamedParams: false, cppcoreguidelines-rvalue-reference-param-not-moved.IgnoreNonDeducedTemplateTypes: true}}" -- -isystem %clang_tidy_headers -fno-delayed-template-parsing
// RUN: %check_clang_tidy -check-suffix=,NONDEDUCED -std=c++11 %s cppcoreguidelines-rvalue-reference-param-not-moved %t -- \
-// RUN: -config="{CheckOptions: {cppcoreguidelines-rvalue-reference-param-not-moved.AllowPartialMove: true, cppcoreguidelines-rvalue-reference-param-not-moved.IgnoreUnnamedParams: true, cppcoreguidelines-rvalue-reference-param-not-moved.IgnoreNonDeducedTemplateTypes: false}}" -- -fno-delayed-template-parsing
+// RUN: -config="{CheckOptions: {cppcoreguidelines-rvalue-reference-param-not-moved.AllowPartialMove: true, cppcoreguidelines-rvalue-reference-param-not-moved.IgnoreUnnamedParams: true, cppcoreguidelines-rvalue-reference-param-not-moved.IgnoreNonDeducedTemplateTypes: false}}" -- -isystem %clang_tidy_headers -fno-delayed-template-parsing
// NOLINTBEGIN
-namespace std {
-template <typename>
-struct remove_reference;
-
-template <typename _Tp> struct remove_reference { typedef _Tp type; };
-template <typename _Tp> struct remove_reference<_Tp&> { typedef _Tp type; };
-template <typename _Tp> struct remove_reference<_Tp&&> { typedef _Tp type; };
-
-template <typename _Tp>
-constexpr typename std::remove_reference<_Tp>::type &&move(_Tp &&__t) noexcept;
-
-template <typename _Tp>
-constexpr _Tp &&
-forward(typename remove_reference<_Tp>::type &__t) noexcept;
-
-}
+#include <utility>
// NOLINTEND
struct Obj {
diff --git a/clang-tools-extra/test/clang-tidy/checkers/performance/for-range-copy.cpp b/clang-tools-extra/test/clang-tidy/checkers/performance/for-range-copy.cpp
index 0b5ef50fdbd7f..82f53a4b31d18 100644
--- a/clang-tools-extra/test/clang-tidy/checkers/performance/for-range-copy.cpp
+++ b/clang-tools-extra/test/clang-tidy/checkers/performance/for-range-copy.cpp
@@ -1,20 +1,6 @@
-// RUN: %check_clang_tidy %s performance-for-range-copy %t -- -- -fno-delayed-template-parsing
+// RUN: %check_clang_tidy %s performance-for-range-copy %t -- -- -isystem %clang_tidy_headers -fno-delayed-template-parsing
-namespace std {
-
-template <typename _Tp>
-struct remove_reference { typedef _Tp type; };
-template <typename _Tp>
-struct remove_reference<_Tp&> { typedef _Tp type; };
-template <typename _Tp>
-struct remove_reference<_Tp&&> { typedef _Tp type; };
-
-template <typename _Tp>
-constexpr typename std::remove_reference<_Tp>::type &&move(_Tp &&__t) {
- return static_cast<typename std::remove_reference<_Tp>::type &&>(__t);
-}
-
-} // std
+#include <utility>
template <typename T>
struct Iterator {
diff --git a/clang-tools-extra/test/clang-tidy/checkers/performance/move-const-arg-const-ref.cpp b/clang-tools-extra/test/clang-tidy/checkers/performance/move-const-arg-const-ref.cpp
index 95ab6571b9bb9..a62f875e13408 100644
--- a/clang-tools-extra/test/clang-tidy/checkers/performance/move-const-arg-const-ref.cpp
+++ b/clang-tools-extra/test/clang-tidy/checkers/performance/move-const-arg-const-ref.cpp
@@ -1,38 +1,8 @@
-// RUN: %check_clang_tidy %s performance-move-const-arg %t \
+// RUN: %check_clang_tidy %s performance-move-const-arg %t -- \
// RUN: -config='{CheckOptions: \
-// RUN: {performance-move-const-arg.CheckMoveToConstRef: false}}'
+// RUN: {performance-move-const-arg.CheckMoveToConstRef: false}}' -- -isystem %clang_tidy_headers
-namespace std {
-template <typename>
-struct remove_reference;
-
-template <typename _Tp>
-struct remove_reference {
- typedef _Tp type;
-};
-
-template <typename _Tp>
-struct remove_reference<_Tp &> {
- typedef _Tp type;
-};
-
-template <typename _Tp>
-struct remove_reference<_Tp &&> {
- typedef _Tp type;
-};
-
-template <typename _Tp>
-constexpr typename std::remove_reference<_Tp>::type &&move(_Tp &&__t) {
- return static_cast<typename std::remove_reference<_Tp>::type &&>(__t);
-}
-
-template <typename _Tp>
-constexpr _Tp &&
-forward(typename remove_reference<_Tp>::type &__t) noexcept {
- return static_cast<_Tp &&>(__t);
-}
-
-} // namespace std
+#include <utility>
struct TriviallyCopyable {
int i;
diff --git a/clang-tools-extra/test/clang-tidy/checkers/performance/move-const-arg-trivially-copyable.cpp b/clang-tools-extra/test/clang-tidy/checkers/performance/move-const-arg-trivially-copyable.cpp
index 8cc4ecd9e2f0a..1635157bb7ee5 100644
--- a/clang-tools-extra/test/clang-tidy/checkers/performance/move-const-arg-trivially-copyable.cpp
+++ b/clang-tools-extra/test/clang-tidy/checkers/performance/move-const-arg-trivially-copyable.cpp
@@ -1,26 +1,8 @@
-// RUN: %check_clang_tidy %s performance-move-const-arg %t \
+// RUN: %check_clang_tidy %s performance-move-const-arg %t -- \
// RUN: -config='{CheckOptions: \
-// RUN: {performance-move-const-arg.CheckTriviallyCopyableMove: false}}'
+// RUN: {performance-move-const-arg.CheckTriviallyCopyableMove: false}}' -- -isystem %clang_tidy_headers
-namespace std {
-
-template <typename> struct remove_reference;
-template <typename _Tp> struct remove_reference { typedef _Tp type; };
-template <typename _Tp> struct remove_reference<_Tp &> { typedef _Tp type; };
-template <typename _Tp> struct remove_reference<_Tp &&> { typedef _Tp type; };
-
-template <typename _Tp>
-constexpr typename std::remove_reference<_Tp>::type &&move(_Tp &&__t) {
- return static_cast<typename std::remove_reference<_Tp>::type &&>(__t);
-}
-
-template <typename _Tp>
-constexpr _Tp &&
-forward(typename remove_reference<_Tp>::type &__t) noexcept {
- return static_cast<_Tp &&>(__t);
-}
-
-} // namespace std
+#include <utility>
class NoMoveSemantics {
public:
diff --git a/clang-tools-extra/test/clang-tidy/checkers/performance/move-const-arg.cpp b/clang-tools-extra/test/clang-tidy/checkers/performance/move-const-arg.cpp
index 34d51930ac6c8..0ad29e3adda68 100644
--- a/clang-tools-extra/test/clang-tidy/checkers/performance/move-const-arg.cpp
+++ b/clang-tools-extra/test/clang-tidy/checkers/performance/move-const-arg.cpp
@@ -1,36 +1,6 @@
-// RUN: %check_clang_tidy %s performance-move-const-arg %t
+// RUN: %check_clang_tidy %s performance-move-const-arg %t -- -- -isystem %clang_tidy_headers
-namespace std {
-template <typename>
-struct remove_reference;
-
-template <typename _Tp>
-struct remove_reference {
- typedef _Tp type;
-};
-
-template <typename _Tp>
-struct remove_reference<_Tp &> {
- typedef _Tp type;
-};
-
-template <typename _Tp>
-struct remove_reference<_Tp &&> {
- typedef _Tp type;
-};
-
-template <typename _Tp>
-constexpr typename std::remove_reference<_Tp>::type &&move(_Tp &&__t) {
- return static_cast<typename std::remove_reference<_Tp>::type &&>(__t);
-}
-
-template <typename _Tp>
-constexpr _Tp &&
-forward(typename remove_reference<_Tp>::type &__t) noexcept {
- return static_cast<_Tp &&>(__t);
-}
-
-} // namespace std
+#include <utility>
class A {
public:
diff --git a/clang-tools-extra/test/clang-tidy/checkers/performance/move-constructor-init.cpp b/clang-tools-extra/test/clang-tidy/checkers/performance/move-constructor-init.cpp
index e37918eabc586..8b78ec4f670e2 100644
--- a/clang-tools-extra/test/clang-tidy/checkers/performance/move-constructor-init.cpp
+++ b/clang-tools-extra/test/clang-tidy/checkers/performance/move-constructor-init.cpp
@@ -4,18 +4,11 @@
// RUN: -- -isystem %clang_tidy_headers
#include <s.h>
+#include <utility>
+using std::move;
// CHECK-FIXES: #include <utility>
-template <class T> struct remove_reference {typedef T type;};
-template <class T> struct remove_reference<T&> {typedef T type;};
-template <class T> struct remove_reference<T&&> {typedef T type;};
-
-template <typename T>
-typename remove_reference<T>::type&& move(T&& arg) {
- return static_cast<typename remove_reference<T>::type&&>(arg);
-}
-
struct C {
C() = default;
C(const C&) = default;
@@ -31,8 +24,8 @@ struct D : B {
D() : B() {}
D(const D &RHS) : B(RHS) {}
// CHECK-NOTES: :[[@LINE+3]]:16: warning: move constructor initializes base class by calling a copy constructor [performance-move-constructor-init]
- // CHECK-NOTES: 26:3: note: copy constructor being called
- // CHECK-NOTES: 27:3: note: candidate move constructor here
+ // CHECK-NOTES: :[[@LINE-8]]:3: note: copy constructor being called
+ // CHECK-NOTES: :[[@LINE-8]]:3: note: candidate move constructor here
D(D &&RHS) : B(RHS) {}
};
@@ -77,8 +70,8 @@ struct M {
B Mem;
// CHECK-NOTES: :[[@LINE+1]]:16: warning: move constructor initializes class member by calling a copy constructor [performance-move-constructor-init]
M(M &&RHS) : Mem(RHS.Mem) {}
- // CHECK-NOTES: 26:3: note: copy constructor being called
- // CHECK-NOTES: 27:3: note: candidate move constructor here
+ // CHECK-NOTES: :[[@LINE-54]]:3: note: copy constructor being called
+ // CHECK-NOTES: :[[@LINE-54]]:3: note: candidate move constructor here
};
struct N {
@@ -111,7 +104,7 @@ struct TriviallyCopyable {
struct Positive {
Positive(Movable M) : M_(M) {}
- // CHECK-NOTES: [[@LINE-1]]:12: warning: pass by value and use std::move [modernize-pass-by-value]
+ // CHECK-NOTES: :[[@LINE-1]]:12: warning: pass by value and use std::move [modernize-pass-by-value]
// CHECK-FIXES: Positive(Movable M) : M_(std::move(M)) {}
Movable M_;
};
diff --git a/clang-tools-extra/test/clang-tidy/checkers/performance/use-std-move.cpp b/clang-tools-extra/test/clang-tidy/checkers/performance/use-std-move.cpp
index 4492d976c37bd..dfe4db0fd8e1d 100644
--- a/clang-tools-extra/test/clang-tidy/checkers/performance/use-std-move.cpp
+++ b/clang-tools-extra/test/clang-tidy/checkers/performance/use-std-move.cpp
@@ -1,15 +1,9 @@
-// RUN: %check_clang_tidy %s performance-use-std-move %t
+// RUN: %check_clang_tidy %s performance-use-std-move %t -- -- -isystem %clang_tidy_headers
// Definitions used in the tests
// -----------------------------
-namespace std {
-template<class T> struct remove_reference { typedef T type; };
-template<class T> struct remove_reference<T&> { typedef T type; };
-template<class T> struct remove_reference<T&&> { typedef T type; };
-template< class T >
-constexpr typename remove_reference<T>::type&& move( T&& t ) noexcept;
-}
+#include <utility>
struct NonTrivialMoveAssign {
NonTrivialMoveAssign() = default;
>From 13d8dc138c4f1dc681acdb0dd981281fdb7203e1 Mon Sep 17 00:00:00 2001
From: mtx <mitchell.xu2 at gmail.com>
Date: Mon, 9 Mar 2026 23:28:41 +0800
Subject: [PATCH 2/3] try to make windows happy
---
.../checkers/bugprone/forwarding-reference-overload.cpp | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/clang-tools-extra/test/clang-tidy/checkers/bugprone/forwarding-reference-overload.cpp b/clang-tools-extra/test/clang-tidy/checkers/bugprone/forwarding-reference-overload.cpp
index 587658c5d156f..eb0855f8456bc 100644
--- a/clang-tools-extra/test/clang-tidy/checkers/bugprone/forwarding-reference-overload.cpp
+++ b/clang-tools-extra/test/clang-tidy/checkers/bugprone/forwarding-reference-overload.cpp
@@ -53,11 +53,11 @@ template <typename U> class Test2 {
// Guarded with enable_if.
template <typename T>
Test2(T &&n, int i = 5,
- std::enable_if_t<sizeof(int) < sizeof(long), int> a = 5, ...);
+ std::enable_if_t<sizeof(int) < sizeof(long long), int> a = 5, ...);
// Guarded with enable_if.
template <typename T, typename X = typename std::enable_if<
- sizeof(int) < sizeof(long), double>::type &>
+ sizeof(int) < sizeof(long long), double>::type &>
Test2(T &&n);
// Guarded with enable_if.
>From 098f6b708e9486c155cde60ca50a5ba5ad0e1242 Mon Sep 17 00:00:00 2001
From: mtx <mitchell.xu2 at gmail.com>
Date: Tue, 10 Mar 2026 09:28:05 +0800
Subject: [PATCH 3/3] better?
---
.../bugprone/forwarding-reference-overload.cpp | 2 +-
.../bugprone/move-forwarding-reference.cpp | 2 +-
.../bugprone/unhandled-self-assignment.cpp | 2 +-
.../checkers/bugprone/use-after-move.cpp | 4 ++--
.../missing-std-forward-custom-function.cpp | 2 +-
.../missing-std-forward-cxx23.cpp | 2 +-
.../cppcoreguidelines/missing-std-forward.cpp | 2 +-
...e-reference-param-not-moved-custom-function.cpp | 2 +-
.../rvalue-reference-param-not-moved.cpp | 10 +++++-----
.../checkers/performance/for-range-copy.cpp | 2 +-
.../performance/move-const-arg-const-ref.cpp | 2 +-
.../move-const-arg-trivially-copyable.cpp | 2 +-
.../checkers/performance/move-const-arg.cpp | 2 +-
.../checkers/performance/move-constructor-init.cpp | 14 ++++++++++----
.../checkers/performance/use-std-move.cpp | 2 +-
15 files changed, 29 insertions(+), 23 deletions(-)
diff --git a/clang-tools-extra/test/clang-tidy/checkers/bugprone/forwarding-reference-overload.cpp b/clang-tools-extra/test/clang-tidy/checkers/bugprone/forwarding-reference-overload.cpp
index 80c0c202c33c9..89a7107d5a03a 100644
--- a/clang-tools-extra/test/clang-tidy/checkers/bugprone/forwarding-reference-overload.cpp
+++ b/clang-tools-extra/test/clang-tidy/checkers/bugprone/forwarding-reference-overload.cpp
@@ -1,4 +1,4 @@
-// RUN: %check_clang_tidy %s bugprone-forwarding-reference-overload %t -- -- -isystem %clang_tidy_headers
+// RUN: %check_clang_tidy %s bugprone-forwarding-reference-overload %t
#include <utility>
diff --git a/clang-tools-extra/test/clang-tidy/checkers/bugprone/move-forwarding-reference.cpp b/clang-tools-extra/test/clang-tidy/checkers/bugprone/move-forwarding-reference.cpp
index 14331b6d98a7f..c9f40668f449a 100644
--- a/clang-tools-extra/test/clang-tidy/checkers/bugprone/move-forwarding-reference.cpp
+++ b/clang-tools-extra/test/clang-tidy/checkers/bugprone/move-forwarding-reference.cpp
@@ -1,4 +1,4 @@
-// RUN: %check_clang_tidy -std=c++14-or-later %s bugprone-move-forwarding-reference %t -- -- -isystem %clang_tidy_headers -fno-delayed-template-parsing
+// RUN: %check_clang_tidy -std=c++14-or-later %s bugprone-move-forwarding-reference %t -- -- -fno-delayed-template-parsing
#include <utility>
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 b0f97c6276e58..0386c9bfda359 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,4 +1,4 @@
-// RUN: %check_clang_tidy %s bugprone-unhandled-self-assignment %t -- -- -isystem %clang_tidy_headers -fno-delayed-template-parsing
+// RUN: %check_clang_tidy %s bugprone-unhandled-self-assignment %t -- -- -fno-delayed-template-parsing
#include <utility>
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 c9c5324ab1c00..983a7ec578c8d 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
@@ -2,13 +2,13 @@
// RUN: -config='{CheckOptions: { \
// RUN: bugprone-use-after-move.InvalidationFunctions: "::Database<>::StaticCloseConnection;Database<>::CloseConnection;FriendCloseConnection;FreeCloseConnection", \
// RUN: bugprone-use-after-move.ReinitializationFunctions: "::Database<>::Reset;::Database<>::StaticReset;::FriendReset;::RegularReset" \
-// RUN: }}' -- -isystem %clang_tidy_headers \
+// RUN: }}' -- \
// RUN: -fno-delayed-template-parsing
// RUN: %check_clang_tidy -std=c++17-or-later %s bugprone-use-after-move %t -- \
// RUN: -config='{CheckOptions: { \
// RUN: bugprone-use-after-move.InvalidationFunctions: "::Database<>::StaticCloseConnection;Database<>::CloseConnection;FriendCloseConnection;FreeCloseConnection", \
// RUN: bugprone-use-after-move.ReinitializationFunctions: "::Database<>::Reset;::Database<>::StaticReset;::FriendReset;::RegularReset" \
-// RUN: }}' -- -isystem %clang_tidy_headers \
+// RUN: }}' -- \
// RUN: -fno-delayed-template-parsing
#include <utility>
diff --git a/clang-tools-extra/test/clang-tidy/checkers/cppcoreguidelines/missing-std-forward-custom-function.cpp b/clang-tools-extra/test/clang-tidy/checkers/cppcoreguidelines/missing-std-forward-custom-function.cpp
index c9c6076548a10..e8d2863a8745f 100644
--- a/clang-tools-extra/test/clang-tidy/checkers/cppcoreguidelines/missing-std-forward-custom-function.cpp
+++ b/clang-tools-extra/test/clang-tidy/checkers/cppcoreguidelines/missing-std-forward-custom-function.cpp
@@ -1,5 +1,5 @@
// RUN: %check_clang_tidy -std=c++14-or-later %s cppcoreguidelines-missing-std-forward %t -- \
-// RUN: -config="{CheckOptions: {cppcoreguidelines-missing-std-forward.ForwardFunction: custom_forward}}" -- -isystem %clang_tidy_headers -fno-delayed-template-parsing
+// RUN: -config="{CheckOptions: {cppcoreguidelines-missing-std-forward.ForwardFunction: custom_forward}}" -- -fno-delayed-template-parsing
// NOLINTBEGIN
#include <utility>
diff --git a/clang-tools-extra/test/clang-tidy/checkers/cppcoreguidelines/missing-std-forward-cxx23.cpp b/clang-tools-extra/test/clang-tidy/checkers/cppcoreguidelines/missing-std-forward-cxx23.cpp
index 60dc57146d6de..230448219b035 100644
--- a/clang-tools-extra/test/clang-tidy/checkers/cppcoreguidelines/missing-std-forward-cxx23.cpp
+++ b/clang-tools-extra/test/clang-tidy/checkers/cppcoreguidelines/missing-std-forward-cxx23.cpp
@@ -1,4 +1,4 @@
-// RUN: %check_clang_tidy -std=c++23-or-later %s cppcoreguidelines-missing-std-forward %t -- -- -isystem %clang_tidy_headers -fno-delayed-template-parsing
+// RUN: %check_clang_tidy -std=c++23-or-later %s cppcoreguidelines-missing-std-forward %t -- -- -fno-delayed-template-parsing
// NOLINTBEGIN
#include <utility>
diff --git a/clang-tools-extra/test/clang-tidy/checkers/cppcoreguidelines/missing-std-forward.cpp b/clang-tools-extra/test/clang-tidy/checkers/cppcoreguidelines/missing-std-forward.cpp
index 970e3bc4d8042..dab4374d828c6 100644
--- a/clang-tools-extra/test/clang-tidy/checkers/cppcoreguidelines/missing-std-forward.cpp
+++ b/clang-tools-extra/test/clang-tidy/checkers/cppcoreguidelines/missing-std-forward.cpp
@@ -1,4 +1,4 @@
-// RUN: %check_clang_tidy %s cppcoreguidelines-missing-std-forward %t -- -- -isystem %clang_tidy_headers -fno-delayed-template-parsing
+// RUN: %check_clang_tidy %s cppcoreguidelines-missing-std-forward %t -- -- -fno-delayed-template-parsing
// NOLINTBEGIN
#include <utility>
diff --git a/clang-tools-extra/test/clang-tidy/checkers/cppcoreguidelines/rvalue-reference-param-not-moved-custom-function.cpp b/clang-tools-extra/test/clang-tidy/checkers/cppcoreguidelines/rvalue-reference-param-not-moved-custom-function.cpp
index d51006475ac1f..be9fcf6186ab3 100644
--- a/clang-tools-extra/test/clang-tidy/checkers/cppcoreguidelines/rvalue-reference-param-not-moved-custom-function.cpp
+++ b/clang-tools-extra/test/clang-tidy/checkers/cppcoreguidelines/rvalue-reference-param-not-moved-custom-function.cpp
@@ -1,5 +1,5 @@
// RUN: %check_clang_tidy -std=c++11-or-later %s cppcoreguidelines-rvalue-reference-param-not-moved %t -- \
-// RUN: -config="{CheckOptions: {cppcoreguidelines-rvalue-reference-param-not-moved.AllowPartialMove: true, cppcoreguidelines-rvalue-reference-param-not-moved.IgnoreUnnamedParams: true, cppcoreguidelines-rvalue-reference-param-not-moved.IgnoreNonDeducedTemplateTypes: true, cppcoreguidelines-rvalue-reference-param-not-moved.MoveFunction: custom_move}}" -- -isystem %clang_tidy_headers -fno-delayed-template-parsing
+// RUN: -config="{CheckOptions: {cppcoreguidelines-rvalue-reference-param-not-moved.AllowPartialMove: true, cppcoreguidelines-rvalue-reference-param-not-moved.IgnoreUnnamedParams: true, cppcoreguidelines-rvalue-reference-param-not-moved.IgnoreNonDeducedTemplateTypes: true, cppcoreguidelines-rvalue-reference-param-not-moved.MoveFunction: custom_move}}" -- -fno-delayed-template-parsing
// NOLINTBEGIN
#include <utility>
diff --git a/clang-tools-extra/test/clang-tidy/checkers/cppcoreguidelines/rvalue-reference-param-not-moved.cpp b/clang-tools-extra/test/clang-tidy/checkers/cppcoreguidelines/rvalue-reference-param-not-moved.cpp
index d6b22386d428d..f47d181fc1d5c 100644
--- a/clang-tools-extra/test/clang-tidy/checkers/cppcoreguidelines/rvalue-reference-param-not-moved.cpp
+++ b/clang-tools-extra/test/clang-tidy/checkers/cppcoreguidelines/rvalue-reference-param-not-moved.cpp
@@ -1,13 +1,13 @@
// RUN: %check_clang_tidy -std=c++11 %s cppcoreguidelines-rvalue-reference-param-not-moved %t -- \
-// RUN: -config="{CheckOptions: {cppcoreguidelines-rvalue-reference-param-not-moved.AllowPartialMove: true, cppcoreguidelines-rvalue-reference-param-not-moved.IgnoreUnnamedParams: true, cppcoreguidelines-rvalue-reference-param-not-moved.IgnoreNonDeducedTemplateTypes: true}}" -- -isystem %clang_tidy_headers -fno-delayed-template-parsing
+// RUN: -config="{CheckOptions: {cppcoreguidelines-rvalue-reference-param-not-moved.AllowPartialMove: true, cppcoreguidelines-rvalue-reference-param-not-moved.IgnoreUnnamedParams: true, cppcoreguidelines-rvalue-reference-param-not-moved.IgnoreNonDeducedTemplateTypes: true}}" -- -fno-delayed-template-parsing
// RUN: %check_clang_tidy -check-suffix=,CXX14 -std=c++14-or-later %s cppcoreguidelines-rvalue-reference-param-not-moved %t -- \
-// RUN: -config="{CheckOptions: {cppcoreguidelines-rvalue-reference-param-not-moved.AllowPartialMove: true, cppcoreguidelines-rvalue-reference-param-not-moved.IgnoreUnnamedParams: true, cppcoreguidelines-rvalue-reference-param-not-moved.IgnoreNonDeducedTemplateTypes: true}}" -- -isystem %clang_tidy_headers -fno-delayed-template-parsing
+// RUN: -config="{CheckOptions: {cppcoreguidelines-rvalue-reference-param-not-moved.AllowPartialMove: true, cppcoreguidelines-rvalue-reference-param-not-moved.IgnoreUnnamedParams: true, cppcoreguidelines-rvalue-reference-param-not-moved.IgnoreNonDeducedTemplateTypes: true}}" -- -fno-delayed-template-parsing
// RUN: %check_clang_tidy -check-suffix=,NOSUBEXPR -std=c++11 %s cppcoreguidelines-rvalue-reference-param-not-moved %t -- \
-// RUN: -config="{CheckOptions: {cppcoreguidelines-rvalue-reference-param-not-moved.AllowPartialMove: false, cppcoreguidelines-rvalue-reference-param-not-moved.IgnoreUnnamedParams: true, cppcoreguidelines-rvalue-reference-param-not-moved.IgnoreNonDeducedTemplateTypes: true}}" -- -isystem %clang_tidy_headers -fno-delayed-template-parsing
+// RUN: -config="{CheckOptions: {cppcoreguidelines-rvalue-reference-param-not-moved.AllowPartialMove: false, cppcoreguidelines-rvalue-reference-param-not-moved.IgnoreUnnamedParams: true, cppcoreguidelines-rvalue-reference-param-not-moved.IgnoreNonDeducedTemplateTypes: true}}" -- -fno-delayed-template-parsing
// RUN: %check_clang_tidy -check-suffix=,UNNAMED -std=c++11 %s cppcoreguidelines-rvalue-reference-param-not-moved %t -- \
-// RUN: -config="{CheckOptions: {cppcoreguidelines-rvalue-reference-param-not-moved.AllowPartialMove: true, cppcoreguidelines-rvalue-reference-param-not-moved.IgnoreUnnamedParams: false, cppcoreguidelines-rvalue-reference-param-not-moved.IgnoreNonDeducedTemplateTypes: true}}" -- -isystem %clang_tidy_headers -fno-delayed-template-parsing
+// RUN: -config="{CheckOptions: {cppcoreguidelines-rvalue-reference-param-not-moved.AllowPartialMove: true, cppcoreguidelines-rvalue-reference-param-not-moved.IgnoreUnnamedParams: false, cppcoreguidelines-rvalue-reference-param-not-moved.IgnoreNonDeducedTemplateTypes: true}}" -- -fno-delayed-template-parsing
// RUN: %check_clang_tidy -check-suffix=,NONDEDUCED -std=c++11 %s cppcoreguidelines-rvalue-reference-param-not-moved %t -- \
-// RUN: -config="{CheckOptions: {cppcoreguidelines-rvalue-reference-param-not-moved.AllowPartialMove: true, cppcoreguidelines-rvalue-reference-param-not-moved.IgnoreUnnamedParams: true, cppcoreguidelines-rvalue-reference-param-not-moved.IgnoreNonDeducedTemplateTypes: false}}" -- -isystem %clang_tidy_headers -fno-delayed-template-parsing
+// RUN: -config="{CheckOptions: {cppcoreguidelines-rvalue-reference-param-not-moved.AllowPartialMove: true, cppcoreguidelines-rvalue-reference-param-not-moved.IgnoreUnnamedParams: true, cppcoreguidelines-rvalue-reference-param-not-moved.IgnoreNonDeducedTemplateTypes: false}}" -- -fno-delayed-template-parsing
// NOLINTBEGIN
#include <utility>
diff --git a/clang-tools-extra/test/clang-tidy/checkers/performance/for-range-copy.cpp b/clang-tools-extra/test/clang-tidy/checkers/performance/for-range-copy.cpp
index 82f53a4b31d18..74bc27ebb2066 100644
--- a/clang-tools-extra/test/clang-tidy/checkers/performance/for-range-copy.cpp
+++ b/clang-tools-extra/test/clang-tidy/checkers/performance/for-range-copy.cpp
@@ -1,4 +1,4 @@
-// RUN: %check_clang_tidy %s performance-for-range-copy %t -- -- -isystem %clang_tidy_headers -fno-delayed-template-parsing
+// RUN: %check_clang_tidy %s performance-for-range-copy %t -- -- -fno-delayed-template-parsing
#include <utility>
diff --git a/clang-tools-extra/test/clang-tidy/checkers/performance/move-const-arg-const-ref.cpp b/clang-tools-extra/test/clang-tidy/checkers/performance/move-const-arg-const-ref.cpp
index a62f875e13408..b0678f5d0a5b7 100644
--- a/clang-tools-extra/test/clang-tidy/checkers/performance/move-const-arg-const-ref.cpp
+++ b/clang-tools-extra/test/clang-tidy/checkers/performance/move-const-arg-const-ref.cpp
@@ -1,6 +1,6 @@
// RUN: %check_clang_tidy %s performance-move-const-arg %t -- \
// RUN: -config='{CheckOptions: \
-// RUN: {performance-move-const-arg.CheckMoveToConstRef: false}}' -- -isystem %clang_tidy_headers
+// RUN: {performance-move-const-arg.CheckMoveToConstRef: false}}'
#include <utility>
diff --git a/clang-tools-extra/test/clang-tidy/checkers/performance/move-const-arg-trivially-copyable.cpp b/clang-tools-extra/test/clang-tidy/checkers/performance/move-const-arg-trivially-copyable.cpp
index 1635157bb7ee5..21d1e6478fb55 100644
--- a/clang-tools-extra/test/clang-tidy/checkers/performance/move-const-arg-trivially-copyable.cpp
+++ b/clang-tools-extra/test/clang-tidy/checkers/performance/move-const-arg-trivially-copyable.cpp
@@ -1,6 +1,6 @@
// RUN: %check_clang_tidy %s performance-move-const-arg %t -- \
// RUN: -config='{CheckOptions: \
-// RUN: {performance-move-const-arg.CheckTriviallyCopyableMove: false}}' -- -isystem %clang_tidy_headers
+// RUN: {performance-move-const-arg.CheckTriviallyCopyableMove: false}}'
#include <utility>
diff --git a/clang-tools-extra/test/clang-tidy/checkers/performance/move-const-arg.cpp b/clang-tools-extra/test/clang-tidy/checkers/performance/move-const-arg.cpp
index 0ad29e3adda68..cbb8c9eabd974 100644
--- a/clang-tools-extra/test/clang-tidy/checkers/performance/move-const-arg.cpp
+++ b/clang-tools-extra/test/clang-tidy/checkers/performance/move-const-arg.cpp
@@ -1,4 +1,4 @@
-// RUN: %check_clang_tidy %s performance-move-const-arg %t -- -- -isystem %clang_tidy_headers
+// RUN: %check_clang_tidy %s performance-move-const-arg %t
#include <utility>
diff --git a/clang-tools-extra/test/clang-tidy/checkers/performance/move-constructor-init.cpp b/clang-tools-extra/test/clang-tidy/checkers/performance/move-constructor-init.cpp
index 8b78ec4f670e2..4f1f7a0b1eed8 100644
--- a/clang-tools-extra/test/clang-tidy/checkers/performance/move-constructor-init.cpp
+++ b/clang-tools-extra/test/clang-tidy/checkers/performance/move-constructor-init.cpp
@@ -1,14 +1,20 @@
// RUN: %check_clang_tidy %s performance-move-constructor-init,modernize-pass-by-value %t -- \
// RUN: -config='{CheckOptions: \
-// RUN: {modernize-pass-by-value.ValuesOnly: true}}' \
-// RUN: -- -isystem %clang_tidy_headers
+// RUN: {modernize-pass-by-value.ValuesOnly: true}}'
#include <s.h>
-#include <utility>
-using std::move;
// CHECK-FIXES: #include <utility>
+template <class T> struct remove_reference {typedef T type;};
+template <class T> struct remove_reference<T&> {typedef T type;};
+template <class T> struct remove_reference<T&&> {typedef T type;};
+
+template <typename T>
+typename remove_reference<T>::type&& move(T&& arg) {
+ return static_cast<typename remove_reference<T>::type&&>(arg);
+}
+
struct C {
C() = default;
C(const C&) = default;
diff --git a/clang-tools-extra/test/clang-tidy/checkers/performance/use-std-move.cpp b/clang-tools-extra/test/clang-tidy/checkers/performance/use-std-move.cpp
index ce6ea43728292..c7014859adf50 100644
--- a/clang-tools-extra/test/clang-tidy/checkers/performance/use-std-move.cpp
+++ b/clang-tools-extra/test/clang-tidy/checkers/performance/use-std-move.cpp
@@ -1,4 +1,4 @@
-// RUN: %check_clang_tidy %s performance-use-std-move %t -- -- -isystem %clang_tidy_headers
+// RUN: %check_clang_tidy %s performance-use-std-move %t
// Definitions used in the tests
// -----------------------------
More information about the cfe-commits
mailing list