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