diff options
Diffstat (limited to 'clang-tools-extra/test/clang-tidy/readability-uniqueptr-delete-release.cpp')
-rw-r--r-- | clang-tools-extra/test/clang-tidy/readability-uniqueptr-delete-release.cpp | 76 |
1 files changed, 0 insertions, 76 deletions
diff --git a/clang-tools-extra/test/clang-tidy/readability-uniqueptr-delete-release.cpp b/clang-tools-extra/test/clang-tidy/readability-uniqueptr-delete-release.cpp deleted file mode 100644 index bd51bc62dba..00000000000 --- a/clang-tools-extra/test/clang-tidy/readability-uniqueptr-delete-release.cpp +++ /dev/null @@ -1,76 +0,0 @@ -// RUN: %check_clang_tidy %s readability-uniqueptr-delete-release %t - -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(); -}; -} // namespace std - -std::unique_ptr<int>& ReturnsAUnique(); - -void Positives() { - std::unique_ptr<int> P; - delete P.release(); - // CHECK-MESSAGES: :[[@LINE-1]]:3: warning: prefer '= nullptr' to 'delete x.release()' to reset unique_ptr<> objects [readability-uniqueptr-delete-release] - // CHECK-FIXES: {{^}} P = nullptr; - - auto P2 = P; - delete P2.release(); - // CHECK-MESSAGES: :[[@LINE-1]]:3: warning: prefer '= nullptr' to 'delete x.release()' to reset unique_ptr<> objects [readability-uniqueptr-delete-release] - // CHECK-FIXES: {{^}} P2 = nullptr; - - std::unique_ptr<int> Array[20]; - delete Array[4].release(); - // CHECK-MESSAGES: :[[@LINE-1]]:3: warning: prefer '= nullptr' to 'delete - // CHECK-FIXES: {{^}} Array[4] = nullptr; - - delete ReturnsAUnique().release(); - // CHECK-MESSAGES: :[[@LINE-1]]:3: warning: prefer '= nullptr' to 'delete - // CHECK-FIXES: {{^}} ReturnsAUnique() = nullptr; -} - -struct NotDefaultDeleter {}; - -struct NotUniquePtr { - int* release(); -}; - -void Negatives() { - std::unique_ptr<int, NotDefaultDeleter> P; - delete P.release(); - - NotUniquePtr P2; - delete P2.release(); -} - -template <typename T, typename D> -void NegativeDeleterT() { - // Ideally this would trigger a warning, but we have all dependent types - // disabled for now. - std::unique_ptr<T> P; - delete P.release(); - - // We ignore this one because the deleter is a template argument. - // Not all instantiations will use the default deleter. - std::unique_ptr<int, D> P2; - delete P2.release(); -} -template void NegativeDeleterT<int, std::default_delete<int>>(); - -// Test some macros - -#define DELETE_RELEASE(x) delete (x).release() -void NegativesWithTemplate() { - std::unique_ptr<int> P; - DELETE_RELEASE(P); -} |