diff --git a/clang-tools-extra/test/clang-tidy/checkers/abseil/redundant-strcat-calls.cpp b/clang-tools-extra/test/clang-tidy/checkers/abseil/redundant-strcat-calls.cpp --- a/clang-tools-extra/test/clang-tidy/checkers/abseil/redundant-strcat-calls.cpp +++ b/clang-tools-extra/test/clang-tidy/checkers/abseil/redundant-strcat-calls.cpp @@ -1,92 +1,8 @@ -// RUN: %check_clang_tidy %s abseil-redundant-strcat-calls %t +// RUN: %check_clang_tidy %s abseil-redundant-strcat-calls %t -- -- -isystem %clang_tidy_headers +#include int strlen(const char *); -// Here we mimic the hierarchy of ::string. -// We need to do so because we are matching on the fully qualified name of the -// methods. -struct __sso_string_base {}; -namespace __gnu_cxx { -template -class __versa_string { - public: - const char *c_str() const; - const char *data() const; - int size() const; - int capacity() const; - int length() const; - bool empty() const; - char &operator[](int); - void clear(); - void resize(int); - int compare(const __versa_string &) const; -}; -} // namespace __gnu_cxx - -namespace std { -template -class char_traits {}; -template -class allocator {}; -} // namespace std - -template , - typename C = std::allocator> -class basic_string : public __gnu_cxx::__versa_string { - public: - basic_string(); - basic_string(const basic_string &); - basic_string(const char *, C = C()); - basic_string(const char *, int, C = C()); - basic_string(const basic_string &, int, int, C = C()); - ~basic_string(); - - basic_string &operator+=(const basic_string &); -}; - -template -basic_string operator+(const basic_string &, - const basic_string &); -template -basic_string operator+(const basic_string &, const char *); - -typedef basic_string string; - -bool operator==(const string &, const string &); -bool operator==(const string &, const char *); -bool operator==(const char *, const string &); - -bool operator!=(const string &, const string &); -bool operator<(const string &, const string &); -bool operator>(const string &, const string &); -bool operator<=(const string &, const string &); -bool operator>=(const string &, const string &); - -namespace std { -template , - typename _Alloc = allocator<_CharT>> -class basic_string; - -template -class basic_string { - public: - basic_string(); - basic_string(const basic_string &); - basic_string(const char *, const _Alloc & = _Alloc()); - basic_string(const char *, int, const _Alloc & = _Alloc()); - basic_string(const basic_string &, int, int, const _Alloc & = _Alloc()); - ~basic_string(); - - basic_string &operator+=(const basic_string &); - - unsigned size() const; - unsigned length() const; - bool empty() const; -}; - -typedef basic_string string; -} // namespace std - namespace absl { class string_view { @@ -95,12 +11,12 @@ string_view(); string_view(const char *); - string_view(const string &); + string_view(const std::string &); string_view(const char *, int); string_view(string_view, int); template - explicit operator ::basic_string() const; + explicit operator std::basic_string() const; const char *data() const; int size() const; @@ -113,7 +29,7 @@ AlphaNum(int i); AlphaNum(double f); AlphaNum(const char *c_str); - AlphaNum(const string &str); + AlphaNum(const std::string &str); AlphaNum(const string_view &pc); private: @@ -121,28 +37,28 @@ AlphaNum &operator=(const AlphaNum &); }; -string StrCat(); -string StrCat(const AlphaNum &A); -string StrCat(const AlphaNum &A, const AlphaNum &B); -string StrCat(const AlphaNum &A, const AlphaNum &B, const AlphaNum &C); -string StrCat(const AlphaNum &A, const AlphaNum &B, const AlphaNum &C, - const AlphaNum &D); +std::string StrCat(); +std::string StrCat(const AlphaNum &A); +std::string StrCat(const AlphaNum &A, const AlphaNum &B); +std::string StrCat(const AlphaNum &A, const AlphaNum &B, const AlphaNum &C); +std::string StrCat(const AlphaNum &A, const AlphaNum &B, const AlphaNum &C, + const AlphaNum &D); // Support 5 or more arguments template -string StrCat(const AlphaNum &A, const AlphaNum &B, const AlphaNum &C, +std::string StrCat(const AlphaNum &A, const AlphaNum &B, const AlphaNum &C, const AlphaNum &D, const AlphaNum &E, const AV &... args); -void StrAppend(string *Dest, const AlphaNum &A); -void StrAppend(string *Dest, const AlphaNum &A, const AlphaNum &B); -void StrAppend(string *Dest, const AlphaNum &A, const AlphaNum &B, - const AlphaNum &C); -void StrAppend(string *Dest, const AlphaNum &A, const AlphaNum &B, - const AlphaNum &C, const AlphaNum &D); +void StrAppend(std::string *Dest, const AlphaNum &A); +void StrAppend(std::string *Dest, const AlphaNum &A, const AlphaNum &B); +void StrAppend(std::string *Dest, const AlphaNum &A, const AlphaNum &B, + const AlphaNum &C); +void StrAppend(std::string *Dest, const AlphaNum &A, const AlphaNum &B, + const AlphaNum &C, const AlphaNum &D); // Support 5 or more arguments template -void StrAppend(string *Dest, const AlphaNum &A, const AlphaNum &B, +void StrAppend(std::string *Dest, const AlphaNum &A, const AlphaNum &B, const AlphaNum &C, const AlphaNum &D, const AlphaNum &E, const AV &... args); @@ -153,8 +69,8 @@ using absl::StrCat; void Positives() { - string S = StrCat(1, StrCat("A", StrCat(1.1))); - // CHECK-MESSAGES: [[@LINE-1]]:14: warning: multiple calls to 'absl::StrCat' can be flattened into a single call + std::string S = StrCat(1, StrCat("A", StrCat(1.1))); + // CHECK-MESSAGES: [[@LINE-1]]:19: warning: multiple calls to 'absl::StrCat' can be flattened into a single call // CHECK-FIXES: string S = StrCat(1, "A", 1.1); S = StrCat(StrCat(StrCat(StrCat(StrCat(1))))); @@ -190,7 +106,7 @@ void Negatives() { // One arg. It is used for conversion. Ignore. - string S = StrCat(1); + std::string S = StrCat(1); #define A_MACRO(x, y, z) StrCat(x, y, z) S = A_MACRO(1, 2, StrCat("A", "B"));