Skip to content

Commit 41363b4

Browse files
authored
[NFC] [FlowSensitive] Add mock unique_ptr header (#170942)
1 parent bb79b35 commit 41363b4

File tree

1 file changed

+90
-0
lines changed

1 file changed

+90
-0
lines changed

clang/unittests/Analysis/FlowSensitive/MockHeaders.cpp

Lines changed: 90 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2236,6 +2236,95 @@ using testing::AssertionResult;
22362236
#endif // TESTING_DEFS_H
22372237
)cc";
22382238

2239+
constexpr const char StdUniquePtrHeader[] = R"cc(
2240+
namespace std {
2241+
2242+
template <typename T>
2243+
struct default_delete {};
2244+
2245+
template <typename T, typename D = default_delete<T>>
2246+
class unique_ptr {
2247+
public:
2248+
using element_type = T;
2249+
using deleter_type = D;
2250+
2251+
constexpr unique_ptr();
2252+
constexpr unique_ptr(nullptr_t) noexcept;
2253+
unique_ptr(unique_ptr&&);
2254+
explicit unique_ptr(T*);
2255+
template <typename U, typename E>
2256+
unique_ptr(unique_ptr<U, E>&&);
2257+
2258+
~unique_ptr();
2259+
2260+
unique_ptr& operator=(unique_ptr&&);
2261+
template <typename U, typename E>
2262+
unique_ptr& operator=(unique_ptr<U, E>&&);
2263+
unique_ptr& operator=(nullptr_t);
2264+
2265+
void reset(T* = nullptr) noexcept;
2266+
T* release();
2267+
T* get() const;
2268+
2269+
T& operator*() const;
2270+
T* operator->() const;
2271+
explicit operator bool() const noexcept;
2272+
};
2273+
2274+
template <typename T, typename D>
2275+
class unique_ptr<T[], D> {
2276+
public:
2277+
T* get() const;
2278+
T& operator[](size_t i);
2279+
const T& operator[](size_t i) const;
2280+
};
2281+
2282+
template <typename T, typename... Args>
2283+
unique_ptr<T> make_unique(Args&&...);
2284+
2285+
template <class T, class D>
2286+
void swap(unique_ptr<T, D>& x, unique_ptr<T, D>& y) noexcept;
2287+
2288+
template <class T1, class D1, class T2, class D2>
2289+
bool operator==(const unique_ptr<T1, D1>& x, const unique_ptr<T2, D2>& y);
2290+
template <class T1, class D1, class T2, class D2>
2291+
bool operator!=(const unique_ptr<T1, D1>& x, const unique_ptr<T2, D2>& y);
2292+
template <class T1, class D1, class T2, class D2>
2293+
bool operator<(const unique_ptr<T1, D1>& x, const unique_ptr<T2, D2>& y);
2294+
template <class T1, class D1, class T2, class D2>
2295+
bool operator<=(const unique_ptr<T1, D1>& x, const unique_ptr<T2, D2>& y);
2296+
template <class T1, class D1, class T2, class D2>
2297+
bool operator>(const unique_ptr<T1, D1>& x, const unique_ptr<T2, D2>& y);
2298+
template <class T1, class D1, class T2, class D2>
2299+
bool operator>=(const unique_ptr<T1, D1>& x, const unique_ptr<T2, D2>& y);
2300+
2301+
template <class T, class D>
2302+
bool operator==(const unique_ptr<T, D>& x, nullptr_t) noexcept;
2303+
template <class T, class D>
2304+
bool operator==(nullptr_t, const unique_ptr<T, D>& y) noexcept;
2305+
template <class T, class D>
2306+
bool operator!=(const unique_ptr<T, D>& x, nullptr_t) noexcept;
2307+
template <class T, class D>
2308+
bool operator!=(nullptr_t, const unique_ptr<T, D>& y) noexcept;
2309+
template <class T, class D>
2310+
bool operator<(const unique_ptr<T, D>& x, nullptr_t);
2311+
template <class T, class D>
2312+
bool operator<(nullptr_t, const unique_ptr<T, D>& y);
2313+
template <class T, class D>
2314+
bool operator<=(const unique_ptr<T, D>& x, nullptr_t);
2315+
template <class T, class D>
2316+
bool operator<=(nullptr_t, const unique_ptr<T, D>& y);
2317+
template <class T, class D>
2318+
bool operator>(const unique_ptr<T, D>& x, nullptr_t);
2319+
template <class T, class D>
2320+
bool operator>(nullptr_t, const unique_ptr<T, D>& y);
2321+
template <class T, class D>
2322+
bool operator>=(const unique_ptr<T, D>& x, nullptr_t);
2323+
template <class T, class D>
2324+
bool operator>=(nullptr_t, const unique_ptr<T, D>& y);
2325+
}
2326+
)cc";
2327+
22392328
std::vector<std::pair<std::string, std::string>> getMockHeaders() {
22402329
std::vector<std::pair<std::string, std::string>> Headers;
22412330
Headers.emplace_back("cstddef.h", CStdDefHeader);
@@ -2253,6 +2342,7 @@ std::vector<std::pair<std::string, std::string>> getMockHeaders() {
22532342
Headers.emplace_back("statusor_defs.h", StatusOrDefsHeader);
22542343
Headers.emplace_back("absl_log.h", AbslLogHeader);
22552344
Headers.emplace_back("testing_defs.h", TestingDefsHeader);
2345+
Headers.emplace_back("std_unique_ptr.h", StdUniquePtrHeader);
22562346
return Headers;
22572347
}
22582348

0 commit comments

Comments
 (0)