[clang-tools-extra] 9883558 - [clang-tidy][NFC] Make abseil-redundant-strcat-calls checker use <string> header
Piotr Zegar via cfe-commits
cfe-commits at lists.llvm.org
Sat Mar 11 09:49:10 PST 2023
Author: Mike Crowe
Date: 2023-03-11T17:46:56Z
New Revision: 988355808efcf88719b0fa542779c47742756764
URL: https://github.com/llvm/llvm-project/commit/988355808efcf88719b0fa542779c47742756764
DIFF: https://github.com/llvm/llvm-project/commit/988355808efcf88719b0fa542779c47742756764.diff
LOG: [clang-tidy][NFC] Make abseil-redundant-strcat-calls checker use <string> header
Remove duplication in abseil-redundant-strcat-calls check tests,
by using dummy <string> header file string.
Depends on D145310
Reviewed By: PiotrZSL
Differential Revision: https://reviews.llvm.org/D145311
Added:
Modified:
clang-tools-extra/test/clang-tidy/checkers/abseil/redundant-strcat-calls.cpp
Removed:
################################################################################
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
index dad8ef857e2a1..ecd17bba293c5 100644
--- 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 <string>
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 <typename A, typename B, typename C, typename D = __sso_string_base>
-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 <typename T>
-class char_traits {};
-template <typename T>
-class allocator {};
-} // namespace std
-
-template <typename A, typename B = std::char_traits<A>,
- typename C = std::allocator<A>>
-class basic_string : public __gnu_cxx::__versa_string<A, B, C> {
- 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 <typename A, typename B, typename C>
-basic_string<A, B, C> operator+(const basic_string<A, B, C> &,
- const basic_string<A, B, C> &);
-template <typename A, typename B, typename C>
-basic_string<A, B, C> operator+(const basic_string<A, B, C> &, const char *);
-
-typedef basic_string<char> 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 _CharT, typename _Traits = char_traits<_CharT>,
- typename _Alloc = allocator<_CharT>>
-class basic_string;
-
-template <typename _CharT, typename _Traits, typename _Alloc>
-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<char> string;
-} // namespace std
-
namespace absl {
class string_view {
@@ -95,12 +11,12 @@ class string_view {
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 <typename A>
- explicit operator ::basic_string<char, traits_type, A>() const;
+ explicit operator std::basic_string<char, traits_type, A>() const;
const char *data() const;
int size() const;
@@ -113,7 +29,7 @@ struct AlphaNum {
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 @@ struct AlphaNum {
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 <typename... AV>
-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 <typename... AV>
-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::StrAppend;
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 Positives() {
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"));
More information about the cfe-commits
mailing list