mikecrowe updated this revision to Diff 502385. mikecrowe edited the summary of this revision. mikecrowe added a comment.
This new version uses size_t and size_type rather than the annoyingly-named "size" type that the old implementation in redundant-string-cstr.cpp used and is the basis for using the new <string> header in four further checks to be submitted as separate changes. CHANGES SINCE LAST ACTION https://reviews.llvm.org/D144216/new/ https://reviews.llvm.org/D144216 Files: clang-tools-extra/test/clang-tidy/checkers/Inputs/Headers/string clang-tools-extra/test/clang-tidy/checkers/readability/redundant-string-cstr.cpp
Index: clang-tools-extra/test/clang-tidy/checkers/readability/redundant-string-cstr.cpp =================================================================== --- clang-tools-extra/test/clang-tidy/checkers/readability/redundant-string-cstr.cpp +++ clang-tools-extra/test/clang-tidy/checkers/readability/redundant-string-cstr.cpp @@ -1,71 +1,5 @@ -// RUN: %check_clang_tidy %s readability-redundant-string-cstr %t - -typedef unsigned __INT16_TYPE__ char16; -typedef unsigned __INT32_TYPE__ char32; -typedef __SIZE_TYPE__ size; - -namespace std { -template <typename T> -class allocator {}; -template <typename T> -class char_traits {}; -template <typename C, typename T, typename A> -struct basic_string { - typedef basic_string<C, T, A> _Type; - basic_string(); - basic_string(const C *p, const A &a = A()); - - ~basic_string(); - - const C *c_str() const; - const C *data() const; - - _Type& append(const C *s); - _Type& append(const C *s, size n); - _Type& assign(const C *s); - _Type& assign(const C *s, size n); - - int compare(const _Type&) const; - int compare(const C* s) const; - int compare(size pos, size len, const _Type&) const; - int compare(size pos, size len, const C* s) const; - - size find(const _Type& str, size pos = 0) const; - size find(const C* s, size pos = 0) const; - size find(const C* s, size pos, size n) const; - - _Type& insert(size pos, const _Type& str); - _Type& insert(size pos, const C* s); - _Type& insert(size pos, const C* s, size n); - - _Type& operator+=(const _Type& str); - _Type& operator+=(const C* s); - _Type& operator=(const _Type& str); - _Type& operator=(const C* s); -}; - -typedef basic_string<char, std::char_traits<char>, std::allocator<char>> string; -typedef basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t>> wstring; -typedef basic_string<char16, std::char_traits<char16>, std::allocator<char16>> u16string; -typedef basic_string<char32, std::char_traits<char32>, std::allocator<char32>> u32string; - -template <typename C, typename T> -struct basic_string_view { - basic_string_view(const C* s); -}; -typedef basic_string_view<char, std::char_traits<char>> string_view; -typedef basic_string_view<wchar_t, std::char_traits<wchar_t>> wstring_view; -typedef basic_string_view<char16, std::char_traits<char16>> u16string_view; -typedef basic_string_view<char32, std::char_traits<char32>> u32string_view; -} - -std::string operator+(const std::string&, const std::string&); -std::string operator+(const std::string&, const char*); -std::string operator+(const char*, const std::string&); - -bool operator==(const std::string&, const std::string&); -bool operator==(const std::string&, const char*); -bool operator==(const char*, const std::string&); +// RUN: %check_clang_tidy %s readability-redundant-string-cstr %t -- -- -isystem %clang_tidy_headers +#include <string> namespace llvm { struct StringRef { Index: clang-tools-extra/test/clang-tidy/checkers/Inputs/Headers/string =================================================================== --- /dev/null +++ clang-tools-extra/test/clang-tidy/checkers/Inputs/Headers/string @@ -0,0 +1,74 @@ +#ifndef _STRING_ +#define _STRING_ + +// For size_t +#include <string.h> + +typedef unsigned __INT16_TYPE__ char16; +typedef unsigned __INT32_TYPE__ char32; + +namespace std { +template <typename T> +class allocator {}; +template <typename T> +class char_traits {}; +template <typename C, typename T, typename A> +struct basic_string { + typedef size_t size_type; + typedef basic_string<C, T, A> _Type; + basic_string(); + basic_string(const C *p, const A &a = A()); + + ~basic_string(); + + const C *c_str() const; + const C *data() const; + + _Type& append(const C *s); + _Type& append(const C *s, size_type n); + _Type& assign(const C *s); + _Type& assign(const C *s, size_type n); + + int compare(const _Type&) const; + int compare(const C* s) const; + int compare(size_type pos, size_type len, const _Type&) const; + int compare(size_type pos, size_type len, const C* s) const; + + size_type find(const _Type& str, size_type pos = 0) const; + size_type find(const C* s, size_type pos = 0) const; + size_type find(const C* s, size_type pos, size_type n) const; + + _Type& insert(size_type pos, const _Type& str); + _Type& insert(size_type pos, const C* s); + _Type& insert(size_type pos, const C* s, size_type n); + + _Type& operator+=(const _Type& str); + _Type& operator+=(const C* s); + _Type& operator=(const _Type& str); + _Type& operator=(const C* s); +}; + +typedef basic_string<char, std::char_traits<char>, std::allocator<char>> string; +typedef basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t>> wstring; +typedef basic_string<char16, std::char_traits<char16>, std::allocator<char16>> u16string; +typedef basic_string<char32, std::char_traits<char32>, std::allocator<char32>> u32string; + +template <typename C, typename T> +struct basic_string_view { + basic_string_view(const C* s); +}; +typedef basic_string_view<char, std::char_traits<char>> string_view; +typedef basic_string_view<wchar_t, std::char_traits<wchar_t>> wstring_view; +typedef basic_string_view<char16, std::char_traits<char16>> u16string_view; +typedef basic_string_view<char32, std::char_traits<char32>> u32string_view; + +std::string operator+(const std::string&, const std::string&); +std::string operator+(const std::string&, const char*); +std::string operator+(const char*, const std::string&); + +bool operator==(const std::string&, const std::string&); +bool operator==(const std::string&, const char*); +bool operator==(const char*, const std::string&); +} + +#endif // _STRING_
_______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits