1 | // RUN: %check_clang_tidy %s readability-redundant-string-init %t |
---|---|
2 | |
3 | namespace std { |
4 | template <typename T> |
5 | class allocator {}; |
6 | template <typename T> |
7 | class char_traits {}; |
8 | template <typename C, typename T = std::char_traits<C>, typename A = std::allocator<C>> |
9 | struct 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 | }; |
17 | typedef basic_string<char> string; |
18 | typedef basic_string<wchar_t> wstring; |
19 | } |
20 | |
21 | void 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 initialization |
27 | // CHECK-FIXES: std::string b; |
28 | std::string c = R"()"; |
29 | // CHECK-MESSAGES: [[@LINE-1]]:15: warning: redundant string initialization |
30 | // CHECK-FIXES: std::string c; |
31 | std::string d(R"()"); |
32 | // CHECK-MESSAGES: [[@LINE-1]]:15: warning: redundant string initialization |
33 | // 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 | |
42 | void g() { |
43 | std::wstring a = L""; |
44 | // CHECK-MESSAGES: [[@LINE-1]]:16: warning: redundant string initialization |
45 | // CHECK-FIXES: std::wstring a; |
46 | std::wstring b(L""); |
47 | // CHECK-MESSAGES: [[@LINE-1]]:16: warning: redundant string initialization |
48 | // CHECK-FIXES: std::wstring b; |
49 | std::wstring c = LR"()"; |
50 | // CHECK-MESSAGES: [[@LINE-1]]:16: warning: redundant string initialization |
51 | // CHECK-FIXES: std::wstring c; |
52 | std::wstring d(LR"()"); |
53 | // CHECK-MESSAGES: [[@LINE-1]]:16: warning: redundant string initialization |
54 | // 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 |