Eliminate clutter by reorganizing the Lit test files for clang-tidy: - Move checkers/<module>-* to checkers/<module>/*. - Move module specific inputs from Inputs to <module>/Inputs. Remove any module prefix from the file or subdirectory name as they are no longer needed. - Introduce a Lit substitution %clang_tidy_headers for the system headers in checkers/Inputs/Headers and use this throughout. This avoids referencing system headers through a relative path to the parent directory and makes it clear that these fake system headers are shared among all modules. - Update add_new_check.py to follow the above conventions when creating the boiler plate test files for a new check. - Update Contributing.rst to describe per-module Inputs directory and fix link to test source code. Differential Revision: https://reviews.llvm.org/D128072
62 lines
1.9 KiB
C++
62 lines
1.9 KiB
C++
// RUN: %check_clang_tidy %s readability-redundant-string-init %t
|
|
|
|
namespace std {
|
|
template <typename T>
|
|
class allocator {};
|
|
template <typename T>
|
|
class char_traits {};
|
|
template <typename C, typename T = std::char_traits<C>, typename A = std::allocator<C>>
|
|
struct basic_string {
|
|
basic_string();
|
|
basic_string(const basic_string&);
|
|
// MSVC headers define two constructors instead of using optional arguments.
|
|
basic_string(const C *);
|
|
basic_string(const C *, const A &);
|
|
~basic_string();
|
|
};
|
|
typedef basic_string<char> string;
|
|
typedef basic_string<wchar_t> wstring;
|
|
}
|
|
|
|
void f() {
|
|
std::string a = "";
|
|
// CHECK-MESSAGES: [[@LINE-1]]:15: warning: redundant string initialization [readability-redundant-string-init]
|
|
// CHECK-FIXES: std::string a;
|
|
std::string b("");
|
|
// CHECK-MESSAGES: [[@LINE-1]]:15: warning: redundant string initialization
|
|
// CHECK-FIXES: std::string b;
|
|
std::string c = R"()";
|
|
// CHECK-MESSAGES: [[@LINE-1]]:15: warning: redundant string initialization
|
|
// CHECK-FIXES: std::string c;
|
|
std::string d(R"()");
|
|
// CHECK-MESSAGES: [[@LINE-1]]:15: warning: redundant string initialization
|
|
// CHECK-FIXES: std::string d;
|
|
|
|
std::string u = "u";
|
|
std::string w("w");
|
|
std::string x = R"(x)";
|
|
std::string y(R"(y)");
|
|
std::string z;
|
|
}
|
|
|
|
void g() {
|
|
std::wstring a = L"";
|
|
// CHECK-MESSAGES: [[@LINE-1]]:16: warning: redundant string initialization
|
|
// CHECK-FIXES: std::wstring a;
|
|
std::wstring b(L"");
|
|
// CHECK-MESSAGES: [[@LINE-1]]:16: warning: redundant string initialization
|
|
// CHECK-FIXES: std::wstring b;
|
|
std::wstring c = LR"()";
|
|
// CHECK-MESSAGES: [[@LINE-1]]:16: warning: redundant string initialization
|
|
// CHECK-FIXES: std::wstring c;
|
|
std::wstring d(LR"()");
|
|
// CHECK-MESSAGES: [[@LINE-1]]:16: warning: redundant string initialization
|
|
// CHECK-FIXES: std::wstring d;
|
|
|
|
std::wstring u = L"u";
|
|
std::wstring w(L"w");
|
|
std::wstring x = LR"(x)";
|
|
std::wstring y(LR"(y)");
|
|
std::wstring z;
|
|
}
|