62 lines · cpp
1// RUN: %check_clang_tidy %s readability-redundant-string-init %t2 3namespace std {4template <typename T>5class allocator {};6template <typename T>7class char_traits {};8template <typename C, typename T = std::char_traits<C>, typename A = std::allocator<C>>9struct basic_string {10 basic_string();11 basic_string(const basic_string&);12 // MSVC headers define two constructors instead of using optional arguments.13 basic_string(const C *);14 basic_string(const C *, const A &);15 ~basic_string();16};17typedef basic_string<char> string;18typedef basic_string<wchar_t> wstring;19}20 21void f() {22 std::string a = "";23 // CHECK-MESSAGES: [[@LINE-1]]:15: warning: redundant string initialization [readability-redundant-string-init]24 // CHECK-FIXES: std::string a;25 std::string b("");26 // CHECK-MESSAGES: [[@LINE-1]]:15: warning: redundant string initialization27 // CHECK-FIXES: std::string b;28 std::string c = R"()";29 // CHECK-MESSAGES: [[@LINE-1]]:15: warning: redundant string initialization30 // CHECK-FIXES: std::string c;31 std::string d(R"()");32 // CHECK-MESSAGES: [[@LINE-1]]:15: warning: redundant string initialization33 // CHECK-FIXES: std::string d;34 35 std::string u = "u";36 std::string w("w");37 std::string x = R"(x)";38 std::string y(R"(y)");39 std::string z;40}41 42void g() {43 std::wstring a = L"";44 // CHECK-MESSAGES: [[@LINE-1]]:16: warning: redundant string initialization45 // CHECK-FIXES: std::wstring a;46 std::wstring b(L"");47 // CHECK-MESSAGES: [[@LINE-1]]:16: warning: redundant string initialization48 // CHECK-FIXES: std::wstring b;49 std::wstring c = LR"()";50 // CHECK-MESSAGES: [[@LINE-1]]:16: warning: redundant string initialization51 // CHECK-FIXES: std::wstring c;52 std::wstring d(LR"()");53 // CHECK-MESSAGES: [[@LINE-1]]:16: warning: redundant string initialization54 // CHECK-FIXES: std::wstring d;55 56 std::wstring u = L"u";57 std::wstring w(L"w");58 std::wstring x = LR"(x)";59 std::wstring y(LR"(y)");60 std::wstring z;61}62