| 1 | // RUN: %check_clang_tidy --match-partial-fixes %s bugprone-stringview-nullptr -std=c++17 %t |
| 2 | |
| 3 | namespace std { |
| 4 | |
| 5 | using size_t = long long; |
| 6 | using nullptr_t = decltype(nullptr); |
| 7 | |
| 8 | template <typename T> |
| 9 | T &&declval(); |
| 10 | |
| 11 | template <typename T> |
| 12 | struct type_identity { using type = T; }; |
| 13 | template <typename T> |
| 14 | using type_identity_t = typename type_identity<T>::type; |
| 15 | |
| 16 | template <typename CharT> |
| 17 | class basic_string_view { |
| 18 | public: |
| 19 | constexpr basic_string_view() {} |
| 20 | |
| 21 | constexpr basic_string_view(const CharT *) {} |
| 22 | |
| 23 | // Not present in C++17 and C++20: |
| 24 | // constexpr basic_string_view(std::nullptr_t) {} |
| 25 | |
| 26 | constexpr basic_string_view(const CharT *, size_t) {} |
| 27 | |
| 28 | constexpr basic_string_view(const basic_string_view &) {} |
| 29 | |
| 30 | constexpr basic_string_view &operator=(const basic_string_view &) { return *this; } |
| 31 | }; |
| 32 | |
| 33 | template <typename CharT> |
| 34 | constexpr bool operator<(basic_string_view<CharT>, basic_string_view<CharT>) { |
| 35 | return {}; |
| 36 | } |
| 37 | template <typename CharT> |
| 38 | constexpr bool operator<(type_identity_t<basic_string_view<CharT>>, |
| 39 | basic_string_view<CharT>) { |
| 40 | return {}; |
| 41 | } |
| 42 | template <typename CharT> |
| 43 | constexpr bool operator<(basic_string_view<CharT>, |
| 44 | type_identity_t<basic_string_view<CharT>>) { |
| 45 | return {}; |
| 46 | } |
| 47 | |
| 48 | template <typename CharT> |
| 49 | constexpr bool operator<=(basic_string_view<CharT>, basic_string_view<CharT>) { |
| 50 | return {}; |
| 51 | } |
| 52 | template <typename CharT> |
| 53 | constexpr bool operator<=(type_identity_t<basic_string_view<CharT>>, |
| 54 | basic_string_view<CharT>) { |
| 55 | return {}; |
| 56 | } |
| 57 | template <typename CharT> |
| 58 | constexpr bool operator<=(basic_string_view<CharT>, |
| 59 | type_identity_t<basic_string_view<CharT>>) { |
| 60 | return {}; |
| 61 | } |
| 62 | |
| 63 | template <typename CharT> |
| 64 | constexpr bool operator>(basic_string_view<CharT>, basic_string_view<CharT>) { |
| 65 | return {}; |
| 66 | } |
| 67 | template <typename CharT> |
| 68 | constexpr bool operator>(type_identity_t<basic_string_view<CharT>>, |
| 69 | basic_string_view<CharT>) { |
| 70 | return {}; |
| 71 | } |
| 72 | template <typename CharT> |
| 73 | constexpr bool operator>(basic_string_view<CharT>, |
| 74 | type_identity_t<basic_string_view<CharT>>) { |
| 75 | return {}; |
| 76 | } |
| 77 | |
| 78 | template <typename CharT> |
| 79 | constexpr bool operator>=(basic_string_view<CharT>, basic_string_view<CharT>) { |
| 80 | return {}; |
| 81 | } |
| 82 | template <typename CharT> |
| 83 | constexpr bool operator>=(type_identity_t<basic_string_view<CharT>>, |
| 84 | basic_string_view<CharT>) { |
| 85 | return {}; |
| 86 | } |
| 87 | template <typename CharT> |
| 88 | constexpr bool operator>=(basic_string_view<CharT>, |
| 89 | type_identity_t<basic_string_view<CharT>>) { |
| 90 | return {}; |
| 91 | } |
| 92 | |
| 93 | template <typename CharT> |
| 94 | constexpr bool operator==(basic_string_view<CharT>, basic_string_view<CharT>) { |
| 95 | return {}; |
| 96 | } |
| 97 | template <typename CharT> |
| 98 | constexpr bool operator==(type_identity_t<basic_string_view<CharT>>, |
| 99 | basic_string_view<CharT>) { |
| 100 | return {}; |
| 101 | } |
| 102 | template <typename CharT> |
| 103 | constexpr bool operator==(basic_string_view<CharT>, |
| 104 | type_identity_t<basic_string_view<CharT>>) { |
| 105 | return {}; |
| 106 | } |
| 107 | |
| 108 | template <typename CharT> |
| 109 | constexpr bool operator!=(basic_string_view<CharT>, basic_string_view<CharT>) { |
| 110 | return {}; |
| 111 | } |
| 112 | template <typename CharT> |
| 113 | constexpr bool operator!=(type_identity_t<basic_string_view<CharT>>, |
| 114 | basic_string_view<CharT>) { |
| 115 | return {}; |
| 116 | } |
| 117 | template <typename CharT> |
| 118 | constexpr bool operator!=(basic_string_view<CharT>, |
| 119 | type_identity_t<basic_string_view<CharT>>) { |
| 120 | return {}; |
| 121 | } |
| 122 | |
| 123 | using string_view = basic_string_view<char>; |
| 124 | |
| 125 | } // namespace std |
| 126 | |
| 127 | using SV = std::string_view; // Used in some places for shorter line length |
| 128 | |
| 129 | void function(std::string_view); |
| 130 | void function(std::string_view, std::string_view); |
| 131 | |
| 132 | void temporary_construction() /* a */ { |
| 133 | // Functional Cast |
| 134 | { |
| 135 | (void)(std::string_view(nullptr)) /* a1 */; |
| 136 | // CHECK-MESSAGES: :[[@LINE-1]]:29: warning: constructing basic_string_view from null is undefined; replace with the default constructor |
| 137 | // CHECK-FIXES: {{^}} (void)(std::string_view()) /* a1 */; |
| 138 | |
| 139 | (void)(std::string_view((nullptr))) /* a2 */; |
| 140 | // CHECK-MESSAGES: :[[@LINE-1]]:29: warning: constructing{{.*}}default |
| 141 | // CHECK-FIXES: {{^}} (void)(std::string_view()) /* a2 */; |
| 142 | |
| 143 | (void)(std::string_view({nullptr})) /* a3 */; |
| 144 | // CHECK-MESSAGES: :[[@LINE-1]]:29: warning: constructing{{.*}}default |
| 145 | // CHECK-FIXES: {{^}} (void)(std::string_view()) /* a3 */; |
| 146 | |
| 147 | (void)(std::string_view({(nullptr)})) /* a4 */; |
| 148 | // CHECK-MESSAGES: :[[@LINE-1]]:29: warning: constructing{{.*}}default |
| 149 | // CHECK-FIXES: {{^}} (void)(std::string_view()) /* a4 */; |
| 150 | |
| 151 | (void)(std::string_view({})) /* a5 */; // Default `const CharT*` |
| 152 | // CHECK-MESSAGES: :[[@LINE-1]]:29: warning: constructing{{.*}}default |
| 153 | // CHECK-FIXES: {{^}} (void)(std::string_view()) /* a5 */; |
| 154 | } |
| 155 | |
| 156 | // Temporary Object |
| 157 | { |
| 158 | (void)(std::string_view{nullptr}) /* a6 */; |
| 159 | // CHECK-MESSAGES: :[[@LINE-1]]:29: warning: constructing{{.*}}default |
| 160 | // CHECK-FIXES: {{^}} (void)(std::string_view{}) /* a6 */; |
| 161 | |
| 162 | (void)(std::string_view{(nullptr)}) /* a7 */; |
| 163 | // CHECK-MESSAGES: :[[@LINE-1]]:29: warning: constructing{{.*}}default |
| 164 | // CHECK-FIXES: {{^}} (void)(std::string_view{}) /* a7 */; |
| 165 | |
| 166 | (void)(std::string_view{{nullptr}}) /* a8 */; |
| 167 | // CHECK-MESSAGES: :[[@LINE-1]]:29: warning: constructing{{.*}}default |
| 168 | // CHECK-FIXES: {{^}} (void)(std::string_view{}) /* a8 */; |
| 169 | |
| 170 | (void)(std::string_view{{(nullptr)}}) /* a9 */; |
| 171 | // CHECK-MESSAGES: :[[@LINE-1]]:29: warning: constructing{{.*}}default |
| 172 | // CHECK-FIXES: {{^}} (void)(std::string_view{}) /* a9 */; |
| 173 | |
| 174 | (void)(std::string_view{{}}) /* a10 */; // Default `const CharT*` |
| 175 | // CHECK-MESSAGES: :[[@LINE-1]]:29: warning: constructing{{.*}}default |
| 176 | // CHECK-FIXES: {{^}} (void)(std::string_view{}) /* a10 */; |
| 177 | } |
| 178 | |
| 179 | // C-Style Cast && Compound Literal |
| 180 | { |
| 181 | (void)((std::string_view) nullptr) /* a11 */; |
| 182 | // CHECK-MESSAGES: :[[@LINE-1]]:31: warning: constructing{{.*}}default |
| 183 | // CHECK-FIXES: {{^}} (void)((std::string_view) {}) /* a11 */; |
| 184 | |
| 185 | (void)((std::string_view)(nullptr)) /* a12 */; |
| 186 | // CHECK-MESSAGES: :[[@LINE-1]]:30: warning: constructing{{.*}}default |
| 187 | // CHECK-FIXES: {{^}} (void)((std::string_view){}) /* a12 */; |
| 188 | |
| 189 | (void)((std::string_view){nullptr}) /* a13 */; |
| 190 | // CHECK-MESSAGES: :[[@LINE-1]]:31: warning: constructing{{.*}}default |
| 191 | // CHECK-FIXES: {{^}} (void)((std::string_view){}) /* a13 */; |
| 192 | |
| 193 | (void)((std::string_view){(nullptr)}) /* a14 */; |
| 194 | // CHECK-MESSAGES: :[[@LINE-1]]:31: warning: constructing{{.*}}default |
| 195 | // CHECK-FIXES: {{^}} (void)((std::string_view){}) /* a14 */; |
| 196 | |
| 197 | (void)((std::string_view){{nullptr}}) /* a15 */; |
| 198 | // CHECK-MESSAGES: :[[@LINE-1]]:31: warning: constructing{{.*}}default |
| 199 | // CHECK-FIXES: {{^}} (void)((std::string_view){}) /* a15 */; |
| 200 | |
| 201 | (void)((std::string_view){{(nullptr)}}) /* a16 */; |
| 202 | // CHECK-MESSAGES: :[[@LINE-1]]:31: warning: constructing{{.*}}default |
| 203 | // CHECK-FIXES: {{^}} (void)((std::string_view){}) /* a16 */; |
| 204 | |
| 205 | (void)((std::string_view){{}}) /* a17 */; // Default `const CharT*` |
| 206 | // CHECK-MESSAGES: :[[@LINE-1]]:31: warning: constructing{{.*}}default |
| 207 | // CHECK-FIXES: {{^}} (void)((std::string_view){}) /* a17 */; |
| 208 | |
| 209 | (void)((const std::string_view) nullptr) /* a18 */; |
| 210 | // CHECK-MESSAGES: :[[@LINE-1]]:37: warning: constructing{{.*}}default |
| 211 | // CHECK-FIXES: {{^}} (void)((const std::string_view) {}) /* a18 */; |
| 212 | |
| 213 | (void)((const std::string_view)(nullptr)) /* a19 */; |
| 214 | // CHECK-MESSAGES: :[[@LINE-1]]:36: warning: constructing{{.*}}default |
| 215 | // CHECK-FIXES: {{^}} (void)((const std::string_view){}) /* a19 */; |
| 216 | |
| 217 | (void)((const std::string_view){nullptr}) /* a20 */; |
| 218 | // CHECK-MESSAGES: :[[@LINE-1]]:37: warning: constructing{{.*}}default |
| 219 | // CHECK-FIXES: {{^}} (void)((const std::string_view){}) /* a20 */; |
| 220 | |
| 221 | (void)((const std::string_view){(nullptr)}) /* a21 */; |
| 222 | // CHECK-MESSAGES: :[[@LINE-1]]:37: warning: constructing{{.*}}default |
| 223 | // CHECK-FIXES: {{^}} (void)((const std::string_view){}) /* a21 */; |
| 224 | |
| 225 | (void)((const std::string_view){{nullptr}}) /* a22 */; |
| 226 | // CHECK-MESSAGES: :[[@LINE-1]]:37: warning: constructing{{.*}}default |
| 227 | // CHECK-FIXES: {{^}} (void)((const std::string_view){}) /* a22 */; |
| 228 | |
| 229 | (void)((const std::string_view){{(nullptr)}}) /* a23 */; |
| 230 | // CHECK-MESSAGES: :[[@LINE-1]]:37: warning: constructing{{.*}}default |
| 231 | // CHECK-FIXES: {{^}} (void)((const std::string_view){}) /* a23 */; |
| 232 | |
| 233 | (void)((const std::string_view){{}}) /* a24 */; // Default `const CharT*` |
| 234 | // CHECK-MESSAGES: :[[@LINE-1]]:37: warning: constructing{{.*}}default |
| 235 | // CHECK-FIXES: {{^}} (void)((const std::string_view){}) /* a24 */; |
| 236 | } |
| 237 | |
| 238 | // Static Cast |
| 239 | { |
| 240 | (void)(static_cast<std::string_view>(nullptr)) /* a25 */; |
| 241 | // CHECK-MESSAGES: :[[@LINE-1]]:42: warning: casting to basic_string_view from null is undefined; replace with the empty string |
| 242 | // CHECK-FIXES: {{^}} (void)(static_cast<std::string_view>("")) /* a25 */; |
| 243 | |
| 244 | (void)(static_cast<std::string_view>((nullptr))) /* a26 */; |
| 245 | // CHECK-MESSAGES: :[[@LINE-1]]:42: warning: casting{{.*}}empty string |
| 246 | // CHECK-FIXES: {{^}} (void)(static_cast<std::string_view>("")) /* a26 */; |
| 247 | |
| 248 | (void)(static_cast<const std::string_view>(nullptr)) /* a27 */; |
| 249 | // CHECK-MESSAGES: :[[@LINE-1]]:48: warning: casting{{.*}}empty string |
| 250 | // CHECK-FIXES: {{^}} (void)(static_cast<const std::string_view>("")) /* a27 */; |
| 251 | |
| 252 | (void)(static_cast<const std::string_view>((nullptr))) /* a28 */; |
| 253 | // CHECK-MESSAGES: :[[@LINE-1]]:48: warning: casting{{.*}}empty string |
| 254 | // CHECK-FIXES: {{^}} (void)(static_cast<const std::string_view>("")) /* a28 */; |
| 255 | } |
| 256 | } |
| 257 | |
| 258 | void stack_construction() /* b */ { |
| 259 | // Copy Initialization |
| 260 | { |
| 261 | std::string_view b1 = nullptr; |
| 262 | // CHECK-MESSAGES: :[[@LINE-1]]:27: warning: constructing{{.*}}default |
| 263 | // CHECK-FIXES: {{^}} std::string_view b1 = {}; |
| 264 | |
| 265 | std::string_view b2 = (nullptr); |
| 266 | // CHECK-MESSAGES: :[[@LINE-1]]:27: warning: constructing{{.*}}default |
| 267 | // CHECK-FIXES: {{^}} std::string_view b2 = {}; |
| 268 | |
| 269 | const std::string_view b3 = nullptr; |
| 270 | // CHECK-MESSAGES: :[[@LINE-1]]:33: warning: constructing{{.*}}default |
| 271 | // CHECK-FIXES: {{^}} const std::string_view b3 = {}; |
| 272 | |
| 273 | const std::string_view b4 = (nullptr); |
| 274 | // CHECK-MESSAGES: :[[@LINE-1]]:33: warning: constructing{{.*}}default |
| 275 | // CHECK-FIXES: {{^}} const std::string_view b4 = {}; |
| 276 | } |
| 277 | |
| 278 | // Copy Initialization With Temporary |
| 279 | { |
| 280 | std::string_view b5 = std::string_view(nullptr); |
| 281 | // CHECK-MESSAGES: :[[@LINE-1]]:44: warning: constructing{{.*}}default |
| 282 | // CHECK-FIXES: {{^}} std::string_view b5 = std::string_view(); |
| 283 | |
| 284 | std::string_view b6 = std::string_view{nullptr}; |
| 285 | // CHECK-MESSAGES: :[[@LINE-1]]:44: warning: constructing{{.*}}default |
| 286 | // CHECK-FIXES: {{^}} std::string_view b6 = std::string_view{}; |
| 287 | |
| 288 | std::string_view b7 = (std::string_view) nullptr; |
| 289 | // CHECK-MESSAGES: :[[@LINE-1]]:46: warning: constructing{{.*}}default |
| 290 | // CHECK-FIXES: {{^}} std::string_view b7 = (std::string_view) {}; |
| 291 | |
| 292 | std::string_view b8 = (std::string_view){nullptr}; |
| 293 | // CHECK-MESSAGES: :[[@LINE-1]]:46: warning: constructing{{.*}}default |
| 294 | // CHECK-FIXES: {{^}} std::string_view b8 = (std::string_view){}; |
| 295 | |
| 296 | std::string_view b9 = static_cast<SV>(nullptr); |
| 297 | // CHECK-MESSAGES: :[[@LINE-1]]:43: warning: casting{{.*}}empty string |
| 298 | // CHECK-FIXES: {{^}} std::string_view b9 = static_cast<SV>(""); |
| 299 | } |
| 300 | |
| 301 | // Copy List Initialization |
| 302 | { |
| 303 | std::string_view b10 = {nullptr}; |
| 304 | // CHECK-MESSAGES: :[[@LINE-1]]:29: warning: constructing{{.*}}default |
| 305 | // CHECK-FIXES: {{^}} std::string_view b10 = {}; |
| 306 | |
| 307 | std::string_view b11 = {(nullptr)}; |
| 308 | // CHECK-MESSAGES: :[[@LINE-1]]:29: warning: constructing{{.*}}default |
| 309 | // CHECK-FIXES: {{^}} std::string_view b11 = {}; |
| 310 | |
| 311 | std::string_view b12 = {{nullptr}}; |
| 312 | // CHECK-MESSAGES: :[[@LINE-1]]:29: warning: constructing{{.*}}default |
| 313 | // CHECK-FIXES: {{^}} std::string_view b12 = {}; |
| 314 | |
| 315 | std::string_view b13 = {{(nullptr)}}; |
| 316 | // CHECK-MESSAGES: :[[@LINE-1]]:29: warning: constructing{{.*}}default |
| 317 | // CHECK-FIXES: {{^}} std::string_view b13 = {}; |
| 318 | |
| 319 | std::string_view b14 = {{}}; // Default `const CharT*` |
| 320 | // CHECK-MESSAGES: :[[@LINE-1]]:29: warning: constructing{{.*}}default |
| 321 | // CHECK-FIXES: {{^}} std::string_view b14 = {}; |
| 322 | |
| 323 | const std::string_view b15 = {nullptr}; |
| 324 | // CHECK-MESSAGES: :[[@LINE-1]]:35: warning: constructing{{.*}}default |
| 325 | // CHECK-FIXES: {{^}} const std::string_view b15 = {}; |
| 326 | |
| 327 | const std::string_view b16 = {(nullptr)}; |
| 328 | // CHECK-MESSAGES: :[[@LINE-1]]:35: warning: constructing{{.*}}default |
| 329 | // CHECK-FIXES: {{^}} const std::string_view b16 = {}; |
| 330 | |
| 331 | const std::string_view b17 = {{nullptr}}; |
| 332 | // CHECK-MESSAGES: :[[@LINE-1]]:35: warning: constructing{{.*}}default |
| 333 | // CHECK-FIXES: {{^}} const std::string_view b17 = {}; |
| 334 | |
| 335 | const std::string_view b18 = {{(nullptr)}}; |
| 336 | // CHECK-MESSAGES: :[[@LINE-1]]:35: warning: constructing{{.*}}default |
| 337 | // CHECK-FIXES: {{^}} const std::string_view b18 = {}; |
| 338 | |
| 339 | const std::string_view b19 = {{}}; // Default `const CharT*` |
| 340 | // CHECK-MESSAGES: :[[@LINE-1]]:35: warning: constructing{{.*}}default |
| 341 | // CHECK-FIXES: {{^}} const std::string_view b19 = {}; |
| 342 | } |
| 343 | |
| 344 | // Copy List Initialization With Temporary |
| 345 | { |
| 346 | std::string_view b20 = {std::string_view(nullptr)}; |
| 347 | // CHECK-MESSAGES: :[[@LINE-1]]:46: warning: constructing{{.*}}default |
| 348 | // CHECK-FIXES: {{^}} std::string_view b20 = {std::string_view()}; |
| 349 | |
| 350 | std::string_view b21 = {std::string_view{nullptr}}; |
| 351 | // CHECK-MESSAGES: :[[@LINE-1]]:46: warning: constructing{{.*}}default |
| 352 | // CHECK-FIXES: {{^}} std::string_view b21 = {std::string_view{}}; |
| 353 | |
| 354 | std::string_view b22 = {(std::string_view) nullptr}; |
| 355 | // CHECK-MESSAGES: :[[@LINE-1]]:48: warning: constructing{{.*}}default |
| 356 | // CHECK-FIXES: {{^}} std::string_view b22 = {(std::string_view) {}}; |
| 357 | |
| 358 | std::string_view b23 = {(std::string_view){nullptr}}; |
| 359 | // CHECK-MESSAGES: :[[@LINE-1]]:48: warning: constructing{{.*}}default |
| 360 | // CHECK-FIXES: {{^}} std::string_view b23 = {(std::string_view){}}; |
| 361 | |
| 362 | std::string_view b24 = {static_cast<SV>(nullptr)}; |
| 363 | // CHECK-MESSAGES: :[[@LINE-1]]:45: warning: casting{{.*}}empty string |
| 364 | // CHECK-FIXES: {{^}} std::string_view b24 = {static_cast<SV>("")}; |
| 365 | } |
| 366 | |
| 367 | // Direct Initialization |
| 368 | { |
| 369 | std::string_view b25(nullptr); |
| 370 | // CHECK-MESSAGES: :[[@LINE-1]]:22: warning: constructing{{.*}}default |
| 371 | // CHECK-FIXES: {{^}} std::string_view b25; |
| 372 | |
| 373 | std::string_view b26((nullptr)); |
| 374 | // CHECK-MESSAGES: :[[@LINE-1]]:22: warning: constructing{{.*}}default |
| 375 | // CHECK-FIXES: {{^}} std::string_view b26; |
| 376 | |
| 377 | std::string_view b27({nullptr}); |
| 378 | // CHECK-MESSAGES: :[[@LINE-1]]:22: warning: constructing{{.*}}default |
| 379 | // CHECK-FIXES: {{^}} std::string_view b27; |
| 380 | |
| 381 | std::string_view b28({(nullptr)}); |
| 382 | // CHECK-MESSAGES: :[[@LINE-1]]:22: warning: constructing{{.*}}default |
| 383 | // CHECK-FIXES: {{^}} std::string_view b28; |
| 384 | |
| 385 | std::string_view b29({}); // Default `const CharT*` |
| 386 | // CHECK-MESSAGES: :[[@LINE-1]]:22: warning: constructing{{.*}}default |
| 387 | // CHECK-FIXES: {{^}} std::string_view b29; |
| 388 | |
| 389 | const std::string_view b30(nullptr); |
| 390 | // CHECK-MESSAGES: :[[@LINE-1]]:28: warning: constructing{{.*}}default |
| 391 | // CHECK-FIXES: {{^}} const std::string_view b30; |
| 392 | |
| 393 | const std::string_view b31((nullptr)); |
| 394 | // CHECK-MESSAGES: :[[@LINE-1]]:28: warning: constructing{{.*}}default |
| 395 | // CHECK-FIXES: {{^}} const std::string_view b31; |
| 396 | |
| 397 | const std::string_view b32({nullptr}); |
| 398 | // CHECK-MESSAGES: :[[@LINE-1]]:28: warning: constructing{{.*}}default |
| 399 | // CHECK-FIXES: {{^}} const std::string_view b32; |
| 400 | |
| 401 | const std::string_view b33({(nullptr)}); |
| 402 | // CHECK-MESSAGES: :[[@LINE-1]]:28: warning: constructing{{.*}}default |
| 403 | // CHECK-FIXES: {{^}} const std::string_view b33; |
| 404 | |
| 405 | const std::string_view b34({}); // Default `const CharT*` |
| 406 | // CHECK-MESSAGES: :[[@LINE-1]]:28: warning: constructing{{.*}}default |
| 407 | // CHECK-FIXES: {{^}} const std::string_view b34; |
| 408 | } |
| 409 | |
| 410 | // Direct Initialization With Temporary |
| 411 | { |
| 412 | std::string_view b35(std::string_view(nullptr)); |
| 413 | // CHECK-MESSAGES: :[[@LINE-1]]:43: warning: constructing{{.*}}default |
| 414 | // CHECK-FIXES: {{^}} std::string_view b35(std::string_view()); |
| 415 | |
| 416 | std::string_view b36(std::string_view{nullptr}); |
| 417 | // CHECK-MESSAGES: :[[@LINE-1]]:43: warning: constructing{{.*}}default |
| 418 | // CHECK-FIXES: {{^}} std::string_view b36(std::string_view{}); |
| 419 | |
| 420 | std::string_view b37((std::string_view) nullptr); |
| 421 | // CHECK-MESSAGES: :[[@LINE-1]]:45: warning: constructing{{.*}}default |
| 422 | // CHECK-FIXES: {{^}} std::string_view b37((std::string_view) {}); |
| 423 | |
| 424 | std::string_view b38((std::string_view){nullptr}); |
| 425 | // CHECK-MESSAGES: :[[@LINE-1]]:45: warning: constructing{{.*}}default |
| 426 | // CHECK-FIXES: {{^}} std::string_view b38((std::string_view){}); |
| 427 | |
| 428 | std::string_view b39(static_cast<SV>(nullptr)); |
| 429 | // CHECK-MESSAGES: :[[@LINE-1]]:42: warning: casting{{.*}}empty string |
| 430 | // CHECK-FIXES: {{^}} std::string_view b39(static_cast<SV>("")); |
| 431 | } |
| 432 | |
| 433 | // Direct List Initialization |
| 434 | { |
| 435 | std::string_view b40{nullptr}; |
| 436 | // CHECK-MESSAGES: :[[@LINE-1]]:26: warning: constructing{{.*}}default |
| 437 | // CHECK-FIXES: {{^}} std::string_view b40{}; |
| 438 | |
| 439 | std::string_view b41{(nullptr)}; |
| 440 | // CHECK-MESSAGES: :[[@LINE-1]]:26: warning: constructing{{.*}}default |
| 441 | // CHECK-FIXES: {{^}} std::string_view b41{}; |
| 442 | |
| 443 | std::string_view b42{{nullptr}}; |
| 444 | // CHECK-MESSAGES: :[[@LINE-1]]:26: warning: constructing{{.*}}default |
| 445 | // CHECK-FIXES: {{^}} std::string_view b42{}; |
| 446 | |
| 447 | std::string_view b43{{(nullptr)}}; |
| 448 | // CHECK-MESSAGES: :[[@LINE-1]]:26: warning: constructing{{.*}}default |
| 449 | // CHECK-FIXES: {{^}} std::string_view b43{}; |
| 450 | |
| 451 | std::string_view b44{{}}; // Default `const CharT*` |
| 452 | // CHECK-MESSAGES: :[[@LINE-1]]:26: warning: constructing{{.*}}default |
| 453 | // CHECK-FIXES: {{^}} std::string_view b44{}; |
| 454 | |
| 455 | const std::string_view b45{nullptr}; |
| 456 | // CHECK-MESSAGES: :[[@LINE-1]]:32: warning: constructing{{.*}}default |
| 457 | // CHECK-FIXES: {{^}} const std::string_view b45{}; |
| 458 | |
| 459 | const std::string_view b46{(nullptr)}; |
| 460 | // CHECK-MESSAGES: :[[@LINE-1]]:32: warning: constructing{{.*}}default |
| 461 | // CHECK-FIXES: {{^}} const std::string_view b46{}; |
| 462 | |
| 463 | const std::string_view b47{{nullptr}}; |
| 464 | // CHECK-MESSAGES: :[[@LINE-1]]:32: warning: constructing{{.*}}default |
| 465 | // CHECK-FIXES: {{^}} const std::string_view b47{}; |
| 466 | |
| 467 | const std::string_view b48{{(nullptr)}}; |
| 468 | // CHECK-MESSAGES: :[[@LINE-1]]:32: warning: constructing{{.*}}default |
| 469 | // CHECK-FIXES: {{^}} const std::string_view b48{}; |
| 470 | |
| 471 | const std::string_view b49{{}}; // Default `const CharT*` |
| 472 | // CHECK-MESSAGES: :[[@LINE-1]]:32: warning: constructing{{.*}}default |
| 473 | // CHECK-FIXES: {{^}} const std::string_view b49{}; |
| 474 | } |
| 475 | |
| 476 | // Direct List Initialization With Temporary |
| 477 | { |
| 478 | std::string_view b50{std::string_view(nullptr)}; |
| 479 | // CHECK-MESSAGES: :[[@LINE-1]]:43: warning: constructing{{.*}}default |
| 480 | // CHECK-FIXES: {{^}} std::string_view b50{std::string_view()}; |
| 481 | |
| 482 | std::string_view b51{std::string_view{nullptr}}; |
| 483 | // CHECK-MESSAGES: :[[@LINE-1]]:43: warning: constructing{{.*}}default |
| 484 | // CHECK-FIXES: {{^}} std::string_view b51{std::string_view{}}; |
| 485 | |
| 486 | std::string_view b52{(std::string_view) nullptr}; |
| 487 | // CHECK-MESSAGES: :[[@LINE-1]]:45: warning: constructing{{.*}}default |
| 488 | // CHECK-FIXES: {{^}} std::string_view b52{(std::string_view) {}}; |
| 489 | |
| 490 | std::string_view b53{(std::string_view){nullptr}}; |
| 491 | // CHECK-MESSAGES: :[[@LINE-1]]:45: warning: constructing{{.*}}default |
| 492 | // CHECK-FIXES: {{^}} std::string_view b53{(std::string_view){}}; |
| 493 | |
| 494 | std::string_view b54{static_cast<SV>(nullptr)}; |
| 495 | // CHECK-MESSAGES: :[[@LINE-1]]:42: warning: casting{{.*}}empty string |
| 496 | // CHECK-FIXES: {{^}} std::string_view b54{static_cast<SV>("")}; |
| 497 | } |
| 498 | } |
| 499 | |
| 500 | void field_construction() /* c */ { |
| 501 | // Default Member Initializaers |
| 502 | |
| 503 | struct DMICopyInitialization { |
| 504 | std::string_view c1 = nullptr; |
| 505 | // CHECK-MESSAGES: :[[@LINE-1]]:27: warning: constructing{{.*}}default |
| 506 | // CHECK-FIXES: {{^}} std::string_view c1 = {}; |
| 507 | |
| 508 | std::string_view c2 = (nullptr); |
| 509 | // CHECK-MESSAGES: :[[@LINE-1]]:27: warning: constructing{{.*}}default |
| 510 | // CHECK-FIXES: {{^}} std::string_view c2 = {}; |
| 511 | |
| 512 | const std::string_view c3 = nullptr; |
| 513 | // CHECK-MESSAGES: :[[@LINE-1]]:33: warning: constructing{{.*}}default |
| 514 | // CHECK-FIXES: {{^}} const std::string_view c3 = {}; |
| 515 | |
| 516 | const std::string_view c4 = (nullptr); |
| 517 | // CHECK-MESSAGES: :[[@LINE-1]]:33: warning: constructing{{.*}}default |
| 518 | // CHECK-FIXES: {{^}} const std::string_view c4 = {}; |
| 519 | }; |
| 520 | |
| 521 | struct DMICopyInitializationWithTemporary { |
| 522 | std::string_view c5 = std::string_view(nullptr); |
| 523 | // CHECK-MESSAGES: :[[@LINE-1]]:44: warning: constructing{{.*}}default |
| 524 | // CHECK-FIXES: {{^}} std::string_view c5 = std::string_view(); |
| 525 | |
| 526 | std::string_view c6 = std::string_view{nullptr}; |
| 527 | // CHECK-MESSAGES: :[[@LINE-1]]:44: warning: constructing{{.*}}default |
| 528 | // CHECK-FIXES: {{^}} std::string_view c6 = std::string_view{}; |
| 529 | |
| 530 | std::string_view c7 = (std::string_view) nullptr; |
| 531 | // CHECK-MESSAGES: :[[@LINE-1]]:46: warning: constructing{{.*}}default |
| 532 | // CHECK-FIXES: {{^}} std::string_view c7 = (std::string_view) {}; |
| 533 | |
| 534 | std::string_view c8 = (std::string_view){nullptr}; |
| 535 | // CHECK-MESSAGES: :[[@LINE-1]]:46: warning: constructing{{.*}}default |
| 536 | // CHECK-FIXES: {{^}} std::string_view c8 = (std::string_view){}; |
| 537 | |
| 538 | std::string_view c9 = static_cast<SV>(nullptr); |
| 539 | // CHECK-MESSAGES: :[[@LINE-1]]:43: warning: casting{{.*}}empty string |
| 540 | // CHECK-FIXES: {{^}} std::string_view c9 = static_cast<SV>(""); |
| 541 | }; |
| 542 | |
| 543 | struct DMICopyListInitialization { |
| 544 | std::string_view c10 = {nullptr}; |
| 545 | // CHECK-MESSAGES: :[[@LINE-1]]:29: warning: constructing{{.*}}default |
| 546 | // CHECK-FIXES: {{^}} std::string_view c10 = {}; |
| 547 | |
| 548 | std::string_view c11 = {(nullptr)}; |
| 549 | // CHECK-MESSAGES: :[[@LINE-1]]:29: warning: constructing{{.*}}default |
| 550 | // CHECK-FIXES: {{^}} std::string_view c11 = {}; |
| 551 | |
| 552 | std::string_view c12 = {{nullptr}}; |
| 553 | // CHECK-MESSAGES: :[[@LINE-1]]:29: warning: constructing{{.*}}default |
| 554 | // CHECK-FIXES: {{^}} std::string_view c12 = {}; |
| 555 | |
| 556 | std::string_view c13 = {{(nullptr)}}; |
| 557 | // CHECK-MESSAGES: :[[@LINE-1]]:29: warning: constructing{{.*}}default |
| 558 | // CHECK-FIXES: {{^}} std::string_view c13 = {}; |
| 559 | |
| 560 | std::string_view c14 = {{}}; // Default `const CharT*` |
| 561 | // CHECK-MESSAGES: :[[@LINE-1]]:29: warning: constructing{{.*}}default |
| 562 | // CHECK-FIXES: {{^}} std::string_view c14 = {}; |
| 563 | |
| 564 | const std::string_view c15 = {nullptr}; |
| 565 | // CHECK-MESSAGES: :[[@LINE-1]]:35: warning: constructing{{.*}}default |
| 566 | // CHECK-FIXES: {{^}} const std::string_view c15 = {}; |
| 567 | |
| 568 | const std::string_view c16 = {(nullptr)}; |
| 569 | // CHECK-MESSAGES: :[[@LINE-1]]:35: warning: constructing{{.*}}default |
| 570 | // CHECK-FIXES: {{^}} const std::string_view c16 = {}; |
| 571 | |
| 572 | const std::string_view c17 = {{nullptr}}; |
| 573 | // CHECK-MESSAGES: :[[@LINE-1]]:35: warning: constructing{{.*}}default |
| 574 | // CHECK-FIXES: {{^}} const std::string_view c17 = {}; |
| 575 | |
| 576 | const std::string_view c18 = {{(nullptr)}}; |
| 577 | // CHECK-MESSAGES: :[[@LINE-1]]:35: warning: constructing{{.*}}default |
| 578 | // CHECK-FIXES: {{^}} const std::string_view c18 = {}; |
| 579 | |
| 580 | const std::string_view c19 = {{}}; // Default `const CharT*` |
| 581 | // CHECK-MESSAGES: :[[@LINE-1]]:35: warning: constructing{{.*}}default |
| 582 | // CHECK-FIXES: {{^}} const std::string_view c19 = {}; |
| 583 | }; |
| 584 | |
| 585 | struct DMICopyListInitializationWithTemporary { |
| 586 | std::string_view c20 = {std::string_view(nullptr)}; |
| 587 | // CHECK-MESSAGES: :[[@LINE-1]]:46: warning: constructing{{.*}}default |
| 588 | // CHECK-FIXES: {{^}} std::string_view c20 = {std::string_view()}; |
| 589 | |
| 590 | std::string_view c21 = {std::string_view{nullptr}}; |
| 591 | // CHECK-MESSAGES: :[[@LINE-1]]:46: warning: constructing{{.*}}default |
| 592 | // CHECK-FIXES: {{^}} std::string_view c21 = {std::string_view{}}; |
| 593 | |
| 594 | std::string_view c22 = {(std::string_view) nullptr}; |
| 595 | // CHECK-MESSAGES: :[[@LINE-1]]:48: warning: constructing{{.*}}default |
| 596 | // CHECK-FIXES: {{^}} std::string_view c22 = {(std::string_view) {}}; |
| 597 | |
| 598 | std::string_view c23 = {(std::string_view){nullptr}}; |
| 599 | // CHECK-MESSAGES: :[[@LINE-1]]:48: warning: constructing{{.*}}default |
| 600 | // CHECK-FIXES: {{^}} std::string_view c23 = {(std::string_view){}}; |
| 601 | |
| 602 | std::string_view c24 = {static_cast<SV>(nullptr)}; |
| 603 | // CHECK-MESSAGES: :[[@LINE-1]]:45: warning: casting{{.*}}empty string |
| 604 | // CHECK-FIXES: {{^}} std::string_view c24 = {static_cast<SV>("")}; |
| 605 | }; |
| 606 | |
| 607 | struct DMIDirectListInitialization { |
| 608 | std::string_view c25{nullptr}; |
| 609 | // CHECK-MESSAGES: :[[@LINE-1]]:26: warning: constructing{{.*}}default |
| 610 | // CHECK-FIXES: {{^}} std::string_view c25{}; |
| 611 | |
| 612 | std::string_view c26{(nullptr)}; |
| 613 | // CHECK-MESSAGES: :[[@LINE-1]]:26: warning: constructing{{.*}}default |
| 614 | // CHECK-FIXES: {{^}} std::string_view c26{}; |
| 615 | |
| 616 | std::string_view c27{{nullptr}}; |
| 617 | // CHECK-MESSAGES: :[[@LINE-1]]:26: warning: constructing{{.*}}default |
| 618 | // CHECK-FIXES: {{^}} std::string_view c27{}; |
| 619 | |
| 620 | std::string_view c28{{(nullptr)}}; |
| 621 | // CHECK-MESSAGES: :[[@LINE-1]]:26: warning: constructing{{.*}}default |
| 622 | // CHECK-FIXES: {{^}} std::string_view c28{}; |
| 623 | |
| 624 | std::string_view c29{{}}; // Default `const CharT*` |
| 625 | // CHECK-MESSAGES: :[[@LINE-1]]:26: warning: constructing{{.*}}default |
| 626 | // CHECK-FIXES: {{^}} std::string_view c29{}; |
| 627 | |
| 628 | const std::string_view c30{nullptr}; |
| 629 | // CHECK-MESSAGES: :[[@LINE-1]]:32: warning: constructing{{.*}}default |
| 630 | // CHECK-FIXES: {{^}} const std::string_view c30{}; |
| 631 | |
| 632 | const std::string_view c31{(nullptr)}; |
| 633 | // CHECK-MESSAGES: :[[@LINE-1]]:32: warning: constructing{{.*}}default |
| 634 | // CHECK-FIXES: {{^}} const std::string_view c31{}; |
| 635 | |
| 636 | const std::string_view c32{{nullptr}}; |
| 637 | // CHECK-MESSAGES: :[[@LINE-1]]:32: warning: constructing{{.*}}default |
| 638 | // CHECK-FIXES: {{^}} const std::string_view c32{}; |
| 639 | |
| 640 | const std::string_view c33{{(nullptr)}}; |
| 641 | // CHECK-MESSAGES: :[[@LINE-1]]:32: warning: constructing{{.*}}default |
| 642 | // CHECK-FIXES: {{^}} const std::string_view c33{}; |
| 643 | |
| 644 | const std::string_view c34{{}}; // Default `const CharT*` |
| 645 | // CHECK-MESSAGES: :[[@LINE-1]]:32: warning: constructing{{.*}}default |
| 646 | // CHECK-FIXES: {{^}} const std::string_view c34{}; |
| 647 | }; |
| 648 | |
| 649 | struct DMIDirectListInitializationWithTemporary { |
| 650 | std::string_view c35{std::string_view(nullptr)}; |
| 651 | // CHECK-MESSAGES: :[[@LINE-1]]:43: warning: constructing{{.*}}default |
| 652 | // CHECK-FIXES: {{^}} std::string_view c35{std::string_view()}; |
| 653 | |
| 654 | std::string_view c36{std::string_view{nullptr}}; |
| 655 | // CHECK-MESSAGES: :[[@LINE-1]]:43: warning: constructing{{.*}}default |
| 656 | // CHECK-FIXES: {{^}} std::string_view c36{std::string_view{}}; |
| 657 | |
| 658 | std::string_view c37{(std::string_view) nullptr}; |
| 659 | // CHECK-MESSAGES: :[[@LINE-1]]:45: warning: constructing{{.*}}default |
| 660 | // CHECK-FIXES: {{^}} std::string_view c37{(std::string_view) {}}; |
| 661 | |
| 662 | std::string_view c38{(std::string_view){nullptr}}; |
| 663 | // CHECK-MESSAGES: :[[@LINE-1]]:45: warning: constructing{{.*}}default |
| 664 | // CHECK-FIXES: {{^}} std::string_view c38{(std::string_view){}}; |
| 665 | |
| 666 | std::string_view c39{static_cast<SV>(nullptr)}; |
| 667 | // CHECK-MESSAGES: :[[@LINE-1]]:42: warning: casting{{.*}}empty string |
| 668 | // CHECK-FIXES: {{^}} std::string_view c39{static_cast<SV>("")}; |
| 669 | }; |
| 670 | |
| 671 | // Constructor Initializers |
| 672 | |
| 673 | class CIDirectInitialization { |
| 674 | std::string_view c40; |
| 675 | std::string_view c41; |
| 676 | std::string_view c42; |
| 677 | std::string_view c43; |
| 678 | std::string_view c44; |
| 679 | |
| 680 | CIDirectInitialization() |
| 681 | : c40(nullptr), |
| 682 | // CHECK-MESSAGES: :[[@LINE-1]]:15: warning: constructing{{.*}}default |
| 683 | // CHECK-FIXES: {{^}} : c40(), |
| 684 | |
| 685 | c41((nullptr)), |
| 686 | // CHECK-MESSAGES: :[[@LINE-1]]:15: warning: constructing{{.*}}default |
| 687 | // CHECK-FIXES: {{^}} c41(), |
| 688 | |
| 689 | c42({nullptr}), |
| 690 | // CHECK-MESSAGES: :[[@LINE-1]]:15: warning: constructing{{.*}}default |
| 691 | // CHECK-FIXES: {{^}} c42(), |
| 692 | |
| 693 | c43({(nullptr)}), |
| 694 | // CHECK-MESSAGES: :[[@LINE-1]]:15: warning: constructing{{.*}}default |
| 695 | // CHECK-FIXES: {{^}} c43(), |
| 696 | |
| 697 | c44({}) { // Default `const CharT*` |
| 698 | // CHECK-MESSAGES: :[[@LINE-1]]:15: warning: constructing{{.*}}default |
| 699 | // CHECK-FIXES: {{^}} c44() { |
| 700 | } |
| 701 | }; |
| 702 | |
| 703 | class CIDirectInitializationWithTemporary { |
| 704 | std::string_view c45; |
| 705 | std::string_view c46; |
| 706 | std::string_view c47; |
| 707 | std::string_view c48; |
| 708 | std::string_view c49; |
| 709 | |
| 710 | CIDirectInitializationWithTemporary() |
| 711 | : c45(std::string_view(nullptr)), |
| 712 | // CHECK-MESSAGES: :[[@LINE-1]]:32: warning: constructing{{.*}}default |
| 713 | // CHECK-FIXES: {{^}} : c45(std::string_view()), |
| 714 | |
| 715 | c46(std::string_view{nullptr}), |
| 716 | // CHECK-MESSAGES: :[[@LINE-1]]:32: warning: constructing{{.*}}default |
| 717 | // CHECK-FIXES: {{^}} c46(std::string_view{}), |
| 718 | |
| 719 | c47((std::string_view) nullptr), |
| 720 | // CHECK-MESSAGES: :[[@LINE-1]]:34: warning: constructing{{.*}}default |
| 721 | // CHECK-FIXES: {{^}} c47((std::string_view) {}), |
| 722 | |
| 723 | c48((std::string_view){nullptr}), |
| 724 | // CHECK-MESSAGES: :[[@LINE-1]]:34: warning: constructing{{.*}}default |
| 725 | // CHECK-FIXES: {{^}} c48((std::string_view){}), |
| 726 | |
| 727 | c49(static_cast<SV>(nullptr)) { |
| 728 | // CHECK-MESSAGES: :[[@LINE-1]]:31: warning: casting{{.*}}empty string |
| 729 | // CHECK-FIXES: {{^}} c49(static_cast<SV>("")) { |
| 730 | } |
| 731 | }; |
| 732 | |
| 733 | class CIDirectListInitialization { |
| 734 | std::string_view c50; |
| 735 | std::string_view c51; |
| 736 | std::string_view c52; |
| 737 | std::string_view c53; |
| 738 | std::string_view c54; |
| 739 | |
| 740 | CIDirectListInitialization() |
| 741 | : c50{nullptr}, |
| 742 | // CHECK-MESSAGES: :[[@LINE-1]]:15: warning: constructing{{.*}}default |
| 743 | // CHECK-FIXES: {{^}} : c50{}, |
| 744 | |
| 745 | c51{(nullptr)}, |
| 746 | // CHECK-MESSAGES: :[[@LINE-1]]:15: warning: constructing{{.*}}default |
| 747 | // CHECK-FIXES: {{^}} c51{}, |
| 748 | |
| 749 | c52{{nullptr}}, |
| 750 | // CHECK-MESSAGES: :[[@LINE-1]]:15: warning: constructing{{.*}}default |
| 751 | // CHECK-FIXES: {{^}} c52{}, |
| 752 | |
| 753 | c53{{(nullptr)}}, |
| 754 | // CHECK-MESSAGES: :[[@LINE-1]]:15: warning: constructing{{.*}}default |
| 755 | // CHECK-FIXES: {{^}} c53{}, |
| 756 | |
| 757 | c54{{}} { // Default `const CharT*` |
| 758 | // CHECK-MESSAGES: :[[@LINE-1]]:15: warning: constructing{{.*}}default |
| 759 | // CHECK-FIXES: {{^}} c54{} { |
| 760 | } |
| 761 | }; |
| 762 | |
| 763 | class CIDirectListInitializationWithTemporary { |
| 764 | std::string_view c55; |
| 765 | std::string_view c56; |
| 766 | std::string_view c57; |
| 767 | std::string_view c58; |
| 768 | std::string_view c59; |
| 769 | |
| 770 | CIDirectListInitializationWithTemporary() |
| 771 | : c55{std::string_view(nullptr)}, |
| 772 | // CHECK-MESSAGES: :[[@LINE-1]]:32: warning: constructing{{.*}}default |
| 773 | // CHECK-FIXES: {{^}} : c55{std::string_view()}, |
| 774 | |
| 775 | c56{std::string_view{nullptr}}, |
| 776 | // CHECK-MESSAGES: :[[@LINE-1]]:32: warning: constructing{{.*}}default |
| 777 | // CHECK-FIXES: {{^}} c56{std::string_view{}}, |
| 778 | |
| 779 | c57{(std::string_view) nullptr}, |
| 780 | // CHECK-MESSAGES: :[[@LINE-1]]:34: warning: constructing{{.*}}default |
| 781 | // CHECK-FIXES: {{^}} c57{(std::string_view) {}}, |
| 782 | |
| 783 | c58{(std::string_view){nullptr}}, |
| 784 | // CHECK-MESSAGES: :[[@LINE-1]]:34: warning: constructing{{.*}}default |
| 785 | // CHECK-FIXES: {{^}} c58{(std::string_view){}}, |
| 786 | |
| 787 | c59{static_cast<SV>(nullptr)} { |
| 788 | // CHECK-MESSAGES: :[[@LINE-1]]:31: warning: casting{{.*}}empty string |
| 789 | // CHECK-FIXES: {{^}} c59{static_cast<SV>("")} { |
| 790 | } |
| 791 | }; |
| 792 | } |
| 793 | |
| 794 | void default_argument_construction() /* d */ { |
| 795 | // Copy Initialization |
| 796 | { |
| 797 | void d1(std::string_view sv = nullptr); |
| 798 | // CHECK-MESSAGES: :[[@LINE-1]]:35: warning: constructing{{.*}}default |
| 799 | // CHECK-FIXES: {{^}} void d1(std::string_view sv = {}); |
| 800 | |
| 801 | void d2(std::string_view sv = (nullptr)); |
| 802 | // CHECK-MESSAGES: :[[@LINE-1]]:35: warning: constructing{{.*}}default |
| 803 | // CHECK-FIXES: {{^}} void d2(std::string_view sv = {}); |
| 804 | |
| 805 | void d3(const std::string_view sv = nullptr); |
| 806 | // CHECK-MESSAGES: :[[@LINE-1]]:41: warning: constructing{{.*}}default |
| 807 | // CHECK-FIXES: {{^}} void d3(const std::string_view sv = {}); |
| 808 | |
| 809 | void d4(const std::string_view sv = (nullptr)); |
| 810 | // CHECK-MESSAGES: :[[@LINE-1]]:41: warning: constructing{{.*}}default |
| 811 | // CHECK-FIXES: {{^}} void d4(const std::string_view sv = {}); |
| 812 | } |
| 813 | |
| 814 | // Copy Initialization With Temporary |
| 815 | { |
| 816 | void d5(std::string_view sv = std::string_view(nullptr)); |
| 817 | // CHECK-MESSAGES: :[[@LINE-1]]:52: warning: constructing{{.*}}default |
| 818 | // CHECK-FIXES: {{^}} void d5(std::string_view sv = std::string_view()); |
| 819 | |
| 820 | void d6(std::string_view sv = std::string_view{nullptr}); |
| 821 | // CHECK-MESSAGES: :[[@LINE-1]]:52: warning: constructing{{.*}}default |
| 822 | // CHECK-FIXES: {{^}} void d6(std::string_view sv = std::string_view{}); |
| 823 | |
| 824 | void d7(std::string_view sv = (std::string_view) nullptr); |
| 825 | // CHECK-MESSAGES: :[[@LINE-1]]:54: warning: constructing{{.*}}default |
| 826 | // CHECK-FIXES: {{^}} void d7(std::string_view sv = (std::string_view) {}); |
| 827 | |
| 828 | void d8(std::string_view sv = (std::string_view){nullptr}); |
| 829 | // CHECK-MESSAGES: :[[@LINE-1]]:54: warning: constructing{{.*}}default |
| 830 | // CHECK-FIXES: {{^}} void d8(std::string_view sv = (std::string_view){}); |
| 831 | |
| 832 | void d9(std::string_view sv = static_cast<SV>(nullptr)); |
| 833 | // CHECK-MESSAGES: :[[@LINE-1]]:51: warning: casting{{.*}}empty string |
| 834 | // CHECK-FIXES: {{^}} void d9(std::string_view sv = static_cast<SV>("")); |
| 835 | } |
| 836 | |
| 837 | // Copy List Initialization |
| 838 | { |
| 839 | void d10(std::string_view sv = {nullptr}); |
| 840 | // CHECK-MESSAGES: :[[@LINE-1]]:37: warning: constructing{{.*}}default |
| 841 | // CHECK-FIXES: {{^}} void d10(std::string_view sv = {}); |
| 842 | |
| 843 | void d11(std::string_view sv = {(nullptr)}); |
| 844 | // CHECK-MESSAGES: :[[@LINE-1]]:37: warning: constructing{{.*}}default |
| 845 | // CHECK-FIXES: {{^}} void d11(std::string_view sv = {}); |
| 846 | |
| 847 | void d12(std::string_view sv = {{nullptr}}); |
| 848 | // CHECK-MESSAGES: :[[@LINE-1]]:37: warning: constructing{{.*}}default |
| 849 | // CHECK-FIXES: {{^}} void d12(std::string_view sv = {}); |
| 850 | |
| 851 | void d13(std::string_view sv = {{(nullptr)}}); |
| 852 | // CHECK-MESSAGES: :[[@LINE-1]]:37: warning: constructing{{.*}}default |
| 853 | // CHECK-FIXES: {{^}} void d13(std::string_view sv = {}); |
| 854 | |
| 855 | void d14(std::string_view sv = {{}}); // Default `const CharT*` |
| 856 | // CHECK-MESSAGES: :[[@LINE-1]]:37: warning: constructing{{.*}}default |
| 857 | // CHECK-FIXES: {{^}} void d14(std::string_view sv = {}); |
| 858 | |
| 859 | void d15(const std::string_view sv = {nullptr}); |
| 860 | // CHECK-MESSAGES: :[[@LINE-1]]:43: warning: constructing{{.*}}default |
| 861 | // CHECK-FIXES: {{^}} void d15(const std::string_view sv = {}); |
| 862 | |
| 863 | void d16(const std::string_view sv = {(nullptr)}); |
| 864 | // CHECK-MESSAGES: :[[@LINE-1]]:43: warning: constructing{{.*}}default |
| 865 | // CHECK-FIXES: {{^}} void d16(const std::string_view sv = {}); |
| 866 | |
| 867 | void d17(const std::string_view sv = {{nullptr}}); |
| 868 | // CHECK-MESSAGES: :[[@LINE-1]]:43: warning: constructing{{.*}}default |
| 869 | // CHECK-FIXES: {{^}} void d17(const std::string_view sv = {}); |
| 870 | |
| 871 | void d18(const std::string_view sv = {{(nullptr)}}); |
| 872 | // CHECK-MESSAGES: :[[@LINE-1]]:43: warning: constructing{{.*}}default |
| 873 | // CHECK-FIXES: {{^}} void d18(const std::string_view sv = {}); |
| 874 | |
| 875 | void d19(const std::string_view sv = {{}}); // Default `const CharT*` |
| 876 | // CHECK-MESSAGES: :[[@LINE-1]]:43: warning: constructing{{.*}}default |
| 877 | // CHECK-FIXES: {{^}} void d19(const std::string_view sv = {}); |
| 878 | } |
| 879 | |
| 880 | // Copy List Initialization With Temporary |
| 881 | { |
| 882 | void d20(std::string_view sv = {std::string_view(nullptr)}); |
| 883 | // CHECK-MESSAGES: :[[@LINE-1]]:54: warning: constructing{{.*}}default |
| 884 | // CHECK-FIXES: {{^}} void d20(std::string_view sv = {std::string_view()}); |
| 885 | |
| 886 | void d21(std::string_view sv = {std::string_view{nullptr}}); |
| 887 | // CHECK-MESSAGES: :[[@LINE-1]]:54: warning: constructing{{.*}}default |
| 888 | // CHECK-FIXES: {{^}} void d21(std::string_view sv = {std::string_view{}}); |
| 889 | |
| 890 | void d22(std::string_view sv = {(std::string_view) nullptr}); |
| 891 | // CHECK-MESSAGES: :[[@LINE-1]]:56: warning: constructing{{.*}}default |
| 892 | // CHECK-FIXES: {{^}} void d22(std::string_view sv = {(std::string_view) {}}); |
| 893 | |
| 894 | void d23(std::string_view sv = {(std::string_view){nullptr}}); |
| 895 | // CHECK-MESSAGES: :[[@LINE-1]]:56: warning: constructing{{.*}}default |
| 896 | // CHECK-FIXES: {{^}} void d23(std::string_view sv = {(std::string_view){}}); |
| 897 | |
| 898 | void d24(std::string_view sv = {static_cast<SV>(nullptr)}); |
| 899 | // CHECK-MESSAGES: :[[@LINE-1]]:53: warning: casting{{.*}}empty string |
| 900 | // CHECK-FIXES: {{^}} void d24(std::string_view sv = {static_cast<SV>("")}); |
| 901 | } |
| 902 | } |
| 903 | |
| 904 | void heap_construction() /* e */ { |
| 905 | // Direct Initialization |
| 906 | { |
| 907 | (void)(new std::string_view(nullptr)) /* e1 */; |
| 908 | // CHECK-MESSAGES: :[[@LINE-1]]:33: warning: constructing{{.*}}default |
| 909 | // CHECK-FIXES: {{^}} (void)(new std::string_view()) /* e1 */; |
| 910 | |
| 911 | (void)(new std::string_view((nullptr))) /* e2 */; |
| 912 | // CHECK-MESSAGES: :[[@LINE-1]]:33: warning: constructing{{.*}}default |
| 913 | // CHECK-FIXES: {{^}} (void)(new std::string_view()) /* e2 */; |
| 914 | |
| 915 | (void)(new std::string_view({nullptr})) /* e3 */; |
| 916 | // CHECK-MESSAGES: :[[@LINE-1]]:33: warning: constructing{{.*}}default |
| 917 | // CHECK-FIXES: {{^}} (void)(new std::string_view()) /* e3 */; |
| 918 | |
| 919 | (void)(new std::string_view({(nullptr)})) /* e4 */; |
| 920 | // CHECK-MESSAGES: :[[@LINE-1]]:33: warning: constructing{{.*}}default |
| 921 | // CHECK-FIXES: {{^}} (void)(new std::string_view()) /* e4 */; |
| 922 | |
| 923 | (void)(new std::string_view({})) /* e5 */; // Default `const CharT*` |
| 924 | // CHECK-MESSAGES: :[[@LINE-1]]:33: warning: constructing{{.*}}default |
| 925 | // CHECK-FIXES: {{^}} (void)(new std::string_view()) /* e5 */; |
| 926 | |
| 927 | (void)(new const std::string_view(nullptr)) /* e6 */; |
| 928 | // CHECK-MESSAGES: :[[@LINE-1]]:39: warning: constructing{{.*}}default |
| 929 | // CHECK-FIXES: {{^}} (void)(new const std::string_view()) /* e6 */; |
| 930 | |
| 931 | (void)(new const std::string_view((nullptr))) /* e7 */; |
| 932 | // CHECK-MESSAGES: :[[@LINE-1]]:39: warning: constructing{{.*}}default |
| 933 | // CHECK-FIXES: {{^}} (void)(new const std::string_view()) /* e7 */; |
| 934 | |
| 935 | (void)(new const std::string_view({nullptr})) /* e8 */; |
| 936 | // CHECK-MESSAGES: :[[@LINE-1]]:39: warning: constructing{{.*}}default |
| 937 | // CHECK-FIXES: {{^}} (void)(new const std::string_view()) /* e8 */; |
| 938 | |
| 939 | (void)(new const std::string_view({(nullptr)})) /* e9 */; |
| 940 | // CHECK-MESSAGES: :[[@LINE-1]]:39: warning: constructing{{.*}}default |
| 941 | // CHECK-FIXES: {{^}} (void)(new const std::string_view()) /* e9 */; |
| 942 | |
| 943 | (void)(new const std::string_view({})) /* e10 */; // Default `const CharT*` |
| 944 | // CHECK-MESSAGES: :[[@LINE-1]]:39: warning: constructing{{.*}}default |
| 945 | // CHECK-FIXES: {{^}} (void)(new const std::string_view()) /* e10 */; |
| 946 | } |
| 947 | |
| 948 | // Direct Initialization With Temporary |
| 949 | { |
| 950 | (void)(new std::string_view(std::string_view(nullptr))) /* e11 */; |
| 951 | // CHECK-MESSAGES: :[[@LINE-1]]:50: warning: constructing{{.*}}default |
| 952 | // CHECK-FIXES: {{^}} (void)(new std::string_view(std::string_view())) /* e11 */; |
| 953 | |
| 954 | (void)(new std::string_view(std::string_view{nullptr})) /* e12 */; |
| 955 | // CHECK-MESSAGES: :[[@LINE-1]]:50: warning: constructing{{.*}}default |
| 956 | // CHECK-FIXES: {{^}} (void)(new std::string_view(std::string_view{})) /* e12 */; |
| 957 | |
| 958 | (void)(new std::string_view((std::string_view) nullptr)) /* e13 */; |
| 959 | // CHECK-MESSAGES: :[[@LINE-1]]:52: warning: constructing{{.*}}default |
| 960 | // CHECK-FIXES: {{^}} (void)(new std::string_view((std::string_view) {})) /* e13 */; |
| 961 | |
| 962 | (void)(new std::string_view((std::string_view){nullptr})) /* e14 */; |
| 963 | // CHECK-MESSAGES: :[[@LINE-1]]:52: warning: constructing{{.*}}default |
| 964 | // CHECK-FIXES: {{^}} (void)(new std::string_view((std::string_view){})) /* e14 */; |
| 965 | |
| 966 | (void)(new std::string_view(static_cast<SV>(nullptr))) /* e15 */; |
| 967 | // CHECK-MESSAGES: :[[@LINE-1]]:49: warning: casting{{.*}}empty string |
| 968 | // CHECK-FIXES: {{^}} (void)(new std::string_view(static_cast<SV>(""))) /* e15 */; |
| 969 | } |
| 970 | |
| 971 | // Direct List Initialization |
| 972 | { |
| 973 | (void)(new std::string_view{nullptr}) /* e16 */; |
| 974 | // CHECK-MESSAGES: :[[@LINE-1]]:33: warning: constructing{{.*}}default |
| 975 | // CHECK-FIXES: {{^}} (void)(new std::string_view{}) /* e16 */; |
| 976 | |
| 977 | (void)(new std::string_view{(nullptr)}) /* e17 */; |
| 978 | // CHECK-MESSAGES: :[[@LINE-1]]:33: warning: constructing{{.*}}default |
| 979 | // CHECK-FIXES: {{^}} (void)(new std::string_view{}) /* e17 */; |
| 980 | |
| 981 | (void)(new std::string_view{{nullptr}}) /* e18 */; |
| 982 | // CHECK-MESSAGES: :[[@LINE-1]]:33: warning: constructing{{.*}}default |
| 983 | // CHECK-FIXES: {{^}} (void)(new std::string_view{}) /* e18 */; |
| 984 | |
| 985 | (void)(new std::string_view{{(nullptr)}}) /* e19 */; |
| 986 | // CHECK-MESSAGES: :[[@LINE-1]]:33: warning: constructing{{.*}}default |
| 987 | // CHECK-FIXES: {{^}} (void)(new std::string_view{}) /* e19 */; |
| 988 | |
| 989 | (void)(new std::string_view{{}}) /* e20 */; // Default `const CharT*` |
| 990 | // CHECK-MESSAGES: :[[@LINE-1]]:33: warning: constructing{{.*}}default |
| 991 | // CHECK-FIXES: {{^}} (void)(new std::string_view{}) /* e20 */; |
| 992 | |
| 993 | (void)(new const std::string_view{nullptr}) /* e21 */; |
| 994 | // CHECK-MESSAGES: :[[@LINE-1]]:39: warning: constructing{{.*}}default |
| 995 | // CHECK-FIXES: {{^}} (void)(new const std::string_view{}) /* e21 */; |
| 996 | |
| 997 | (void)(new const std::string_view{(nullptr)}) /* e22 */; |
| 998 | // CHECK-MESSAGES: :[[@LINE-1]]:39: warning: constructing{{.*}}default |
| 999 | // CHECK-FIXES: {{^}} (void)(new const std::string_view{}) /* e22 */; |
| 1000 | |
| 1001 | (void)(new const std::string_view{{nullptr}}) /* e23 */; |
| 1002 | // CHECK-MESSAGES: :[[@LINE-1]]:39: warning: constructing{{.*}}default |
| 1003 | // CHECK-FIXES: {{^}} (void)(new const std::string_view{}) /* e23 */; |
| 1004 | |
| 1005 | (void)(new const std::string_view{{(nullptr)}}) /* e24 */; |
| 1006 | // CHECK-MESSAGES: :[[@LINE-1]]:39: warning: constructing{{.*}}default |
| 1007 | // CHECK-FIXES: {{^}} (void)(new const std::string_view{}) /* e24 */; |
| 1008 | |
| 1009 | (void)(new const std::string_view{{}}) /* e25 */; // Default `const CharT*` |
| 1010 | // CHECK-MESSAGES: :[[@LINE-1]]:39: warning: constructing{{.*}}default |
| 1011 | // CHECK-FIXES: {{^}} (void)(new const std::string_view{}) /* e25 */; |
| 1012 | } |
| 1013 | |
| 1014 | // Direct List Initialization With Temporary |
| 1015 | { |
| 1016 | (void)(new std::string_view{std::string_view(nullptr)}) /* e26 */; |
| 1017 | // CHECK-MESSAGES: :[[@LINE-1]]:50: warning: constructing{{.*}}default |
| 1018 | // CHECK-FIXES: {{^}} (void)(new std::string_view{std::string_view()}) /* e26 */; |
| 1019 | |
| 1020 | (void)(new std::string_view{std::string_view{nullptr}}) /* e27 */; |
| 1021 | // CHECK-MESSAGES: :[[@LINE-1]]:50: warning: constructing{{.*}}default |
| 1022 | // CHECK-FIXES: {{^}} (void)(new std::string_view{std::string_view{}}) /* e27 */; |
| 1023 | |
| 1024 | (void)(new std::string_view{(std::string_view) nullptr}) /* e28 */; |
| 1025 | // CHECK-MESSAGES: :[[@LINE-1]]:52: warning: constructing{{.*}}default |
| 1026 | // CHECK-FIXES: {{^}} (void)(new std::string_view{(std::string_view) {}}) /* e28 */; |
| 1027 | |
| 1028 | (void)(new std::string_view{(std::string_view){nullptr}}) /* e29 */; |
| 1029 | // CHECK-MESSAGES: :[[@LINE-1]]:52: warning: constructing{{.*}}default |
| 1030 | // CHECK-FIXES: {{^}} (void)(new std::string_view{(std::string_view){}}) /* e29 */; |
| 1031 | |
| 1032 | (void)(new std::string_view{static_cast<SV>(nullptr)}) /* e30 */; |
| 1033 | // CHECK-MESSAGES: :[[@LINE-1]]:49: warning: casting{{.*}}empty string |
| 1034 | // CHECK-FIXES: {{^}} (void)(new std::string_view{static_cast<SV>("")}) /* e30 */; |
| 1035 | } |
| 1036 | } |
| 1037 | |
| 1038 | void function_argument_initialization() /* f */ { |
| 1039 | // Function Argument Initialization |
| 1040 | { |
| 1041 | function(nullptr) /* f1 */; |
| 1042 | // CHECK-MESSAGES: :[[@LINE-1]]:14: warning: passing null as basic_string_view is undefined; replace with the empty string |
| 1043 | // CHECK-FIXES: {{^}} function("") /* f1 */; |
| 1044 | |
| 1045 | function((nullptr)) /* f2 */; |
| 1046 | // CHECK-MESSAGES: :[[@LINE-1]]:14: warning: passing{{.*}}empty string |
| 1047 | // CHECK-FIXES: {{^}} function("") /* f2 */; |
| 1048 | |
| 1049 | function({nullptr}) /* f3 */; |
| 1050 | // CHECK-MESSAGES: :[[@LINE-1]]:14: warning: passing{{.*}}empty string |
| 1051 | // CHECK-FIXES: {{^}} function("") /* f3 */; |
| 1052 | |
| 1053 | function({(nullptr)}) /* f4 */; |
| 1054 | // CHECK-MESSAGES: :[[@LINE-1]]:14: warning: passing{{.*}}empty string |
| 1055 | // CHECK-FIXES: {{^}} function("") /* f4 */; |
| 1056 | |
| 1057 | function({{}}) /* f5 */; // Default `const CharT*` |
| 1058 | // CHECK-MESSAGES: :[[@LINE-1]]:14: warning: passing{{.*}}empty string |
| 1059 | // CHECK-FIXES: {{^}} function("") /* f5 */; |
| 1060 | } |
| 1061 | |
| 1062 | // Function Argument Initialization With Temporary |
| 1063 | { |
| 1064 | function(std::string_view(nullptr)) /* f6 */; |
| 1065 | // CHECK-MESSAGES: :[[@LINE-1]]:31: warning: constructing{{.*}}default |
| 1066 | // CHECK-FIXES: {{^}} function(std::string_view()) /* f6 */; |
| 1067 | |
| 1068 | function(std::string_view{nullptr}) /* f7 */; |
| 1069 | // CHECK-MESSAGES: :[[@LINE-1]]:31: warning: constructing{{.*}}default |
| 1070 | // CHECK-FIXES: {{^}} function(std::string_view{}) /* f7 */; |
| 1071 | |
| 1072 | function((std::string_view) nullptr) /* f8 */; |
| 1073 | // CHECK-MESSAGES: :[[@LINE-1]]:33: warning: constructing{{.*}}default |
| 1074 | // CHECK-FIXES: {{^}} function((std::string_view) {}) /* f8 */; |
| 1075 | |
| 1076 | function((std::string_view){nullptr}) /* f9 */; |
| 1077 | // CHECK-MESSAGES: :[[@LINE-1]]:33: warning: constructing{{.*}}default |
| 1078 | // CHECK-FIXES: {{^}} function((std::string_view){}) /* f9 */; |
| 1079 | |
| 1080 | function(static_cast<SV>(nullptr)) /* f10 */; |
| 1081 | // CHECK-MESSAGES: :[[@LINE-1]]:30: warning: casting{{.*}}empty string |
| 1082 | // CHECK-FIXES: {{^}} function(static_cast<SV>("")) /* f10 */; |
| 1083 | } |
| 1084 | } |
| 1085 | |
| 1086 | void assignment(std::string_view sv) /* g */ { |
| 1087 | // Assignment |
| 1088 | { |
| 1089 | sv = nullptr /* g1 */; |
| 1090 | // CHECK-MESSAGES: :[[@LINE-1]]:10: warning: assignment to basic_string_view from null is undefined; replace with the default constructor |
| 1091 | // CHECK-FIXES: {{^}} sv = {} /* g1 */; |
| 1092 | |
| 1093 | sv = (nullptr) /* g2 */; |
| 1094 | // CHECK-MESSAGES: :[[@LINE-1]]:10: warning: assignment{{.*}}default |
| 1095 | // CHECK-FIXES: {{^}} sv = {} /* g2 */; |
| 1096 | |
| 1097 | sv = {nullptr} /* g3 */; |
| 1098 | // CHECK-MESSAGES: :[[@LINE-1]]:10: warning: assignment{{.*}}default |
| 1099 | // CHECK-FIXES: {{^}} sv = {} /* g3 */; |
| 1100 | |
| 1101 | sv = {(nullptr)} /* g4 */; |
| 1102 | // CHECK-MESSAGES: :[[@LINE-1]]:10: warning: assignment{{.*}}default |
| 1103 | // CHECK-FIXES: {{^}} sv = {} /* g4 */; |
| 1104 | |
| 1105 | sv = {{}} /* g5 */; // Default `const CharT*` |
| 1106 | // CHECK-MESSAGES: :[[@LINE-1]]:10: warning: assignment{{.*}}default |
| 1107 | // CHECK-FIXES: {{^}} sv = {} /* g5 */; |
| 1108 | } |
| 1109 | |
| 1110 | // Assignment With Temporary |
| 1111 | { |
| 1112 | sv = std::string_view(nullptr) /* g6 */; |
| 1113 | // CHECK-MESSAGES: :[[@LINE-1]]:27: warning: constructing{{.*}}default |
| 1114 | // CHECK-FIXES: {{^}} sv = std::string_view() /* g6 */; |
| 1115 | |
| 1116 | sv = std::string_view{nullptr} /* g7 */; |
| 1117 | // CHECK-MESSAGES: :[[@LINE-1]]:27: warning: constructing{{.*}}default |
| 1118 | // CHECK-FIXES: {{^}} sv = std::string_view{} /* g7 */; |
| 1119 | |
| 1120 | sv = (std::string_view) nullptr /* g8 */; |
| 1121 | // CHECK-MESSAGES: :[[@LINE-1]]:29: warning: constructing{{.*}}default |
| 1122 | // CHECK-FIXES: {{^}} sv = (std::string_view) {} /* g8 */; |
| 1123 | |
| 1124 | sv = (std::string_view){nullptr} /* g9 */; |
| 1125 | // CHECK-MESSAGES: :[[@LINE-1]]:29: warning: constructing{{.*}}default |
| 1126 | // CHECK-FIXES: {{^}} sv = (std::string_view){} /* g9 */; |
| 1127 | |
| 1128 | sv = static_cast<SV>(nullptr) /* g10 */; |
| 1129 | // CHECK-MESSAGES: :[[@LINE-1]]:26: warning: casting{{.*}}empty string |
| 1130 | // CHECK-FIXES: {{^}} sv = static_cast<SV>("") /* g10 */; |
| 1131 | } |
| 1132 | } |
| 1133 | |
| 1134 | void pointer_assignment(std::string_view *sv_ptr) /* h */ { |
| 1135 | // Assignment |
| 1136 | { |
| 1137 | *sv_ptr = nullptr /* h1 */; |
| 1138 | // CHECK-MESSAGES: :[[@LINE-1]]:15: warning: assignment{{.*}}default |
| 1139 | // CHECK-FIXES: {{^}} *sv_ptr = {} /* h1 */; |
| 1140 | |
| 1141 | *sv_ptr = (nullptr) /* h2 */; |
| 1142 | // CHECK-MESSAGES: :[[@LINE-1]]:15: warning: assignment{{.*}}default |
| 1143 | // CHECK-FIXES: {{^}} *sv_ptr = {} /* h2 */; |
| 1144 | |
| 1145 | *sv_ptr = {nullptr} /* h3 */; |
| 1146 | // CHECK-MESSAGES: :[[@LINE-1]]:15: warning: assignment{{.*}}default |
| 1147 | // CHECK-FIXES: {{^}} *sv_ptr = {} /* h3 */; |
| 1148 | |
| 1149 | *sv_ptr = {(nullptr)} /* h4 */; |
| 1150 | // CHECK-MESSAGES: :[[@LINE-1]]:15: warning: assignment{{.*}}default |
| 1151 | // CHECK-FIXES: {{^}} *sv_ptr = {} /* h4 */; |
| 1152 | |
| 1153 | *sv_ptr = {{}} /* h5 */; // Default `const CharT*` |
| 1154 | // CHECK-MESSAGES: :[[@LINE-1]]:15: warning: assignment{{.*}}default |
| 1155 | // CHECK-FIXES: {{^}} *sv_ptr = {} /* h5 */; |
| 1156 | } |
| 1157 | |
| 1158 | // Assignment With Temporary |
| 1159 | { |
| 1160 | *sv_ptr = std::string_view(nullptr) /* h6 */; |
| 1161 | // CHECK-MESSAGES: :[[@LINE-1]]:32: warning: constructing{{.*}}default |
| 1162 | // CHECK-FIXES: {{^}} *sv_ptr = std::string_view() /* h6 */; |
| 1163 | |
| 1164 | *sv_ptr = std::string_view{nullptr} /* h7 */; |
| 1165 | // CHECK-MESSAGES: :[[@LINE-1]]:32: warning: constructing{{.*}}default |
| 1166 | // CHECK-FIXES: {{^}} *sv_ptr = std::string_view{} /* h7 */; |
| 1167 | |
| 1168 | *sv_ptr = (std::string_view) nullptr /* h8 */; |
| 1169 | // CHECK-MESSAGES: :[[@LINE-1]]:34: warning: constructing{{.*}}default |
| 1170 | // CHECK-FIXES: {{^}} *sv_ptr = (std::string_view) {} /* h8 */; |
| 1171 | |
| 1172 | *sv_ptr = (std::string_view){nullptr} /* h9 */; |
| 1173 | // CHECK-MESSAGES: :[[@LINE-1]]:34: warning: constructing{{.*}}default |
| 1174 | // CHECK-FIXES: {{^}} *sv_ptr = (std::string_view){} /* h9 */; |
| 1175 | |
| 1176 | *sv_ptr = static_cast<SV>(nullptr) /* h10 */; |
| 1177 | // CHECK-MESSAGES: :[[@LINE-1]]:31: warning: casting{{.*}}empty string |
| 1178 | // CHECK-FIXES: {{^}} *sv_ptr = static_cast<SV>("") /* h10 */; |
| 1179 | } |
| 1180 | } |
| 1181 | |
| 1182 | void lesser_comparison(std::string_view sv) /* i */ { |
| 1183 | // Without Equality |
| 1184 | { |
| 1185 | (void)(sv < nullptr) /* i1 */; |
| 1186 | // CHECK-MESSAGES: :[[@LINE-1]]:17: warning: comparing basic_string_view to null is undefined; replace with the empty string |
| 1187 | // CHECK-FIXES: {{^}} (void)(sv < "") /* i1 */; |
| 1188 | |
| 1189 | (void)(sv < (nullptr)) /* i2 */; |
| 1190 | // CHECK-MESSAGES: :[[@LINE-1]]:17: warning: comparing{{.*}}empty string |
| 1191 | // CHECK-FIXES: {{^}} (void)(sv < "") /* i2 */; |
| 1192 | |
| 1193 | (void)(nullptr < sv) /* i3 */; |
| 1194 | // CHECK-MESSAGES: :[[@LINE-1]]:12: warning: comparing{{.*}}empty string |
| 1195 | // CHECK-FIXES: {{^}} (void)("" < sv) /* i3 */; |
| 1196 | |
| 1197 | (void)((nullptr) < sv) /* i4 */; |
| 1198 | // CHECK-MESSAGES: :[[@LINE-1]]:12: warning: comparing{{.*}}empty string |
| 1199 | // CHECK-FIXES: {{^}} (void)("" < sv) /* i4 */; |
| 1200 | } |
| 1201 | |
| 1202 | // With Equality |
| 1203 | { |
| 1204 | (void)(sv <= nullptr) /* i5 */; |
| 1205 | // CHECK-MESSAGES: :[[@LINE-1]]:18: warning: comparing{{.*}}empty string |
| 1206 | // CHECK-FIXES: {{^}} (void)(sv <= "") /* i5 */; |
| 1207 | |
| 1208 | (void)(sv <= (nullptr)) /* i6 */; |
| 1209 | // CHECK-MESSAGES: :[[@LINE-1]]:18: warning: comparing{{.*}}empty string |
| 1210 | // CHECK-FIXES: {{^}} (void)(sv <= "") /* i6 */; |
| 1211 | |
| 1212 | (void)(nullptr <= sv) /* i7 */; |
| 1213 | // CHECK-MESSAGES: :[[@LINE-1]]:12: warning: comparing{{.*}}empty string |
| 1214 | // CHECK-FIXES: {{^}} (void)("" <= sv) /* i7 */; |
| 1215 | |
| 1216 | (void)((nullptr) <= sv) /* i8 */; |
| 1217 | // CHECK-MESSAGES: :[[@LINE-1]]:12: warning: comparing{{.*}}empty string |
| 1218 | // CHECK-FIXES: {{^}} (void)("" <= sv) /* i8 */; |
| 1219 | } |
| 1220 | } |
| 1221 | |
| 1222 | void pointer_lesser_comparison(std::string_view *sv_ptr) /* j */ { |
| 1223 | // Without Equality |
| 1224 | { |
| 1225 | (void)(*sv_ptr < nullptr) /* j1 */; |
| 1226 | // CHECK-MESSAGES: :[[@LINE-1]]:22: warning: comparing{{.*}}empty string |
| 1227 | // CHECK-FIXES: {{^}} (void)(*sv_ptr < "") /* j1 */; |
| 1228 | |
| 1229 | (void)(*sv_ptr < (nullptr)) /* j2 */; |
| 1230 | // CHECK-MESSAGES: :[[@LINE-1]]:22: warning: comparing{{.*}}empty string |
| 1231 | // CHECK-FIXES: {{^}} (void)(*sv_ptr < "") /* j2 */; |
| 1232 | |
| 1233 | (void)(nullptr < *sv_ptr) /* j3 */; |
| 1234 | // CHECK-MESSAGES: :[[@LINE-1]]:12: warning: comparing{{.*}}empty string |
| 1235 | // CHECK-FIXES: {{^}} (void)("" < *sv_ptr) /* j3 */; |
| 1236 | |
| 1237 | (void)((nullptr) < *sv_ptr) /* j4 */; |
| 1238 | // CHECK-MESSAGES: :[[@LINE-1]]:12: warning: comparing{{.*}}empty string |
| 1239 | // CHECK-FIXES: {{^}} (void)("" < *sv_ptr) /* j4 */; |
| 1240 | } |
| 1241 | |
| 1242 | // With Equality |
| 1243 | { |
| 1244 | (void)(*sv_ptr <= nullptr) /* j5 */; |
| 1245 | // CHECK-MESSAGES: :[[@LINE-1]]:23: warning: comparing{{.*}}empty string |
| 1246 | // CHECK-FIXES: {{^}} (void)(*sv_ptr <= "") /* j5 */; |
| 1247 | |
| 1248 | (void)(*sv_ptr <= (nullptr)) /* j6 */; |
| 1249 | // CHECK-MESSAGES: :[[@LINE-1]]:23: warning: comparing{{.*}}empty string |
| 1250 | // CHECK-FIXES: {{^}} (void)(*sv_ptr <= "") /* j6 */; |
| 1251 | |
| 1252 | (void)(nullptr <= *sv_ptr) /* j7 */; |
| 1253 | // CHECK-MESSAGES: :[[@LINE-1]]:12: warning: comparing{{.*}}empty string |
| 1254 | // CHECK-FIXES: {{^}} (void)("" <= *sv_ptr) /* j7 */; |
| 1255 | |
| 1256 | (void)((nullptr) <= *sv_ptr) /* j8 */; |
| 1257 | // CHECK-MESSAGES: :[[@LINE-1]]:12: warning: comparing{{.*}}empty string |
| 1258 | // CHECK-FIXES: {{^}} (void)("" <= *sv_ptr) /* j8 */; |
| 1259 | } |
| 1260 | } |
| 1261 | |
| 1262 | void greater_comparison(std::string_view sv) /* k */ { |
| 1263 | // Without Equality |
| 1264 | { |
| 1265 | (void)(sv > nullptr) /* k1 */; |
| 1266 | // CHECK-MESSAGES: :[[@LINE-1]]:17: warning: comparing{{.*}}empty string |
| 1267 | // CHECK-FIXES: {{^}} (void)(sv > "") /* k1 */; |
| 1268 | |
| 1269 | (void)(sv > (nullptr)) /* k2 */; |
| 1270 | // CHECK-MESSAGES: :[[@LINE-1]]:17: warning: comparing{{.*}}empty string |
| 1271 | // CHECK-FIXES: {{^}} (void)(sv > "") /* k2 */; |
| 1272 | |
| 1273 | (void)(nullptr > sv) /* k3 */; |
| 1274 | // CHECK-MESSAGES: :[[@LINE-1]]:12: warning: comparing{{.*}}empty string |
| 1275 | // CHECK-FIXES: {{^}} (void)("" > sv) /* k3 */; |
| 1276 | |
| 1277 | (void)((nullptr) > sv) /* k4 */; |
| 1278 | // CHECK-MESSAGES: :[[@LINE-1]]:12: warning: comparing{{.*}}empty string |
| 1279 | // CHECK-FIXES: {{^}} (void)("" > sv) /* k4 */; |
| 1280 | } |
| 1281 | |
| 1282 | // With Equality |
| 1283 | { |
| 1284 | (void)(sv >= nullptr) /* k5 */; |
| 1285 | // CHECK-MESSAGES: :[[@LINE-1]]:18: warning: comparing{{.*}}empty string |
| 1286 | // CHECK-FIXES: {{^}} (void)(sv >= "") /* k5 */; |
| 1287 | |
| 1288 | (void)(sv >= (nullptr)) /* k6 */; |
| 1289 | // CHECK-MESSAGES: :[[@LINE-1]]:18: warning: comparing{{.*}}empty string |
| 1290 | // CHECK-FIXES: {{^}} (void)(sv >= "") /* k6 */; |
| 1291 | |
| 1292 | (void)(nullptr >= sv) /* k7 */; |
| 1293 | // CHECK-MESSAGES: :[[@LINE-1]]:12: warning: comparing{{.*}}empty string |
| 1294 | // CHECK-FIXES: {{^}} (void)("" >= sv) /* k7 */; |
| 1295 | |
| 1296 | (void)((nullptr) >= sv) /* k8 */; |
| 1297 | // CHECK-MESSAGES: :[[@LINE-1]]:12: warning: comparing{{.*}}empty string |
| 1298 | // CHECK-FIXES: {{^}} (void)("" >= sv) /* k8 */; |
| 1299 | } |
| 1300 | } |
| 1301 | |
| 1302 | void pointer_greater_comparison(std::string_view *sv_ptr) /* l */ { |
| 1303 | // Without Equality |
| 1304 | { |
| 1305 | (void)(*sv_ptr > nullptr) /* l1 */; |
| 1306 | // CHECK-MESSAGES: :[[@LINE-1]]:22: warning: comparing{{.*}}empty string |
| 1307 | // CHECK-FIXES: {{^}} (void)(*sv_ptr > "") /* l1 */; |
| 1308 | |
| 1309 | (void)(*sv_ptr > (nullptr)) /* l2 */; |
| 1310 | // CHECK-MESSAGES: :[[@LINE-1]]:22: warning: comparing{{.*}}empty string |
| 1311 | // CHECK-FIXES: {{^}} (void)(*sv_ptr > "") /* l2 */; |
| 1312 | |
| 1313 | (void)(nullptr > *sv_ptr) /* l3 */; |
| 1314 | // CHECK-MESSAGES: :[[@LINE-1]]:12: warning: comparing{{.*}}empty string |
| 1315 | // CHECK-FIXES: {{^}} (void)("" > *sv_ptr) /* l3 */; |
| 1316 | |
| 1317 | (void)((nullptr) > *sv_ptr) /* l4 */; |
| 1318 | // CHECK-MESSAGES: :[[@LINE-1]]:12: warning: comparing{{.*}}empty string |
| 1319 | // CHECK-FIXES: {{^}} (void)("" > *sv_ptr) /* l4 */; |
| 1320 | } |
| 1321 | |
| 1322 | // With Equality |
| 1323 | { |
| 1324 | (void)(*sv_ptr >= nullptr) /* l5 */; |
| 1325 | // CHECK-MESSAGES: :[[@LINE-1]]:23: warning: comparing{{.*}}empty string |
| 1326 | // CHECK-FIXES: {{^}} (void)(*sv_ptr >= "") /* l5 */; |
| 1327 | |
| 1328 | (void)(*sv_ptr >= (nullptr)) /* l6 */; |
| 1329 | // CHECK-MESSAGES: :[[@LINE-1]]:23: warning: comparing{{.*}}empty string |
| 1330 | // CHECK-FIXES: {{^}} (void)(*sv_ptr >= "") /* l6 */; |
| 1331 | |
| 1332 | (void)(nullptr >= *sv_ptr) /* l7 */; |
| 1333 | // CHECK-MESSAGES: :[[@LINE-1]]:12: warning: comparing{{.*}}empty string |
| 1334 | // CHECK-FIXES: {{^}} (void)("" >= *sv_ptr) /* l7 */; |
| 1335 | |
| 1336 | (void)((nullptr) >= *sv_ptr) /* l8 */; |
| 1337 | // CHECK-MESSAGES: :[[@LINE-1]]:12: warning: comparing{{.*}}empty string |
| 1338 | // CHECK-FIXES: {{^}} (void)("" >= *sv_ptr) /* l8 */; |
| 1339 | } |
| 1340 | } |
| 1341 | |
| 1342 | void relative_comparison_with_temporary(std::string_view sv) /* m */ { |
| 1343 | (void)(sv < std::string_view(nullptr)) /* m1 */; |
| 1344 | // CHECK-MESSAGES: :[[@LINE-1]]:32: warning: constructing{{.*}}default |
| 1345 | // CHECK-FIXES: {{^}} (void)(sv < std::string_view()) /* m1 */; |
| 1346 | |
| 1347 | (void)(sv < std::string_view{nullptr}) /* m2 */; |
| 1348 | // CHECK-MESSAGES: :[[@LINE-1]]:32: warning: constructing{{.*}}default |
| 1349 | // CHECK-FIXES: {{^}} (void)(sv < std::string_view{}) /* m2 */; |
| 1350 | |
| 1351 | (void)(sv < (std::string_view) nullptr) /* m3 */; |
| 1352 | // CHECK-MESSAGES: :[[@LINE-1]]:34: warning: constructing{{.*}}default |
| 1353 | // CHECK-FIXES: {{^}} (void)(sv < (std::string_view) {}) /* m3 */; |
| 1354 | |
| 1355 | (void)(sv < (std::string_view){nullptr}) /* m4 */; |
| 1356 | // CHECK-MESSAGES: :[[@LINE-1]]:34: warning: constructing{{.*}}default |
| 1357 | // CHECK-FIXES: {{^}} (void)(sv < (std::string_view){}) /* m4 */; |
| 1358 | |
| 1359 | (void)(sv < static_cast<SV>(nullptr)) /* m5 */; |
| 1360 | // CHECK-MESSAGES: :[[@LINE-1]]:31: warning: casting{{.*}}empty string |
| 1361 | // CHECK-FIXES: {{^}} (void)(sv < static_cast<SV>("")) /* m5 */; |
| 1362 | } |
| 1363 | |
| 1364 | void equality_comparison(std::string_view sv) /* n */ { |
| 1365 | // Empty Without Parens |
| 1366 | { |
| 1367 | (void)(sv == nullptr) /* n1 */; |
| 1368 | // CHECK-MESSAGES: :[[@LINE-1]]:12: warning: comparing basic_string_view to null is undefined; replace with the emptiness query |
| 1369 | // CHECK-FIXES: {{^}} (void)(sv.empty()) /* n1 */; |
| 1370 | |
| 1371 | (void)(sv == (nullptr)) /* n2 */; |
| 1372 | // CHECK-MESSAGES: :[[@LINE-1]]:12: warning: comparing{{.*}}emptiness query |
| 1373 | // CHECK-FIXES: {{^}} (void)(sv.empty()) /* n2 */; |
| 1374 | |
| 1375 | (void)(nullptr == sv) /* n3 */; |
| 1376 | // CHECK-MESSAGES: :[[@LINE-1]]:12: warning: comparing{{.*}}emptiness query |
| 1377 | // CHECK-FIXES: {{^}} (void)(sv.empty()) /* n3 */; |
| 1378 | |
| 1379 | (void)((nullptr) == sv) /* n4 */; |
| 1380 | // CHECK-MESSAGES: :[[@LINE-1]]:12: warning: comparing{{.*}}emptiness query |
| 1381 | // CHECK-FIXES: {{^}} (void)(sv.empty()) /* n4 */; |
| 1382 | } |
| 1383 | |
| 1384 | // Empty With Parens |
| 1385 | { |
| 1386 | (void)((sv) == nullptr) /* n5 */; |
| 1387 | // CHECK-MESSAGES: :[[@LINE-1]]:12: warning: comparing basic_string_view to null is undefined; replace with the emptiness query |
| 1388 | // CHECK-FIXES: {{^}} (void)(sv.empty()) /* n5 */; |
| 1389 | |
| 1390 | (void)((sv) == (nullptr)) /* n6 */; |
| 1391 | // CHECK-MESSAGES: :[[@LINE-1]]:12: warning: comparing{{.*}}emptiness query |
| 1392 | // CHECK-FIXES: {{^}} (void)(sv.empty()) /* n6 */; |
| 1393 | |
| 1394 | (void)(nullptr == (sv)) /* n7 */; |
| 1395 | // CHECK-MESSAGES: :[[@LINE-1]]:12: warning: comparing{{.*}}emptiness query |
| 1396 | // CHECK-FIXES: {{^}} (void)(sv.empty()) /* n7 */; |
| 1397 | |
| 1398 | (void)((nullptr) == (sv)) /* n8 */; |
| 1399 | // CHECK-MESSAGES: :[[@LINE-1]]:12: warning: comparing{{.*}}emptiness query |
| 1400 | // CHECK-FIXES: {{^}} (void)(sv.empty()) /* n8 */; |
| 1401 | } |
| 1402 | |
| 1403 | // Non-Empty Without Parens |
| 1404 | { |
| 1405 | (void)((sv) != nullptr) /* n9 */; |
| 1406 | // CHECK-MESSAGES: :[[@LINE-1]]:12: warning: comparing{{.*}}emptiness query |
| 1407 | // CHECK-FIXES: {{^}} (void)(!sv.empty()) /* n9 */; |
| 1408 | |
| 1409 | (void)((sv) != (nullptr)) /* n10 */; |
| 1410 | // CHECK-MESSAGES: :[[@LINE-1]]:12: warning: comparing{{.*}}emptiness query |
| 1411 | // CHECK-FIXES: {{^}} (void)(!sv.empty()) /* n10 */; |
| 1412 | |
| 1413 | (void)(nullptr != (sv)) /* n11 */; |
| 1414 | // CHECK-MESSAGES: :[[@LINE-1]]:12: warning: comparing{{.*}}emptiness query |
| 1415 | // CHECK-FIXES: {{^}} (void)(!sv.empty()) /* n11 */; |
| 1416 | |
| 1417 | (void)((nullptr) != (sv)) /* n12 */; |
| 1418 | // CHECK-MESSAGES: :[[@LINE-1]]:12: warning: comparing{{.*}}emptiness query |
| 1419 | // CHECK-FIXES: {{^}} (void)(!sv.empty()) /* n12 */; |
| 1420 | } |
| 1421 | |
| 1422 | // Non-Empty With Parens |
| 1423 | { |
| 1424 | (void)((sv) != nullptr) /* n13 */; |
| 1425 | // CHECK-MESSAGES: :[[@LINE-1]]:12: warning: comparing{{.*}}emptiness query |
| 1426 | // CHECK-FIXES: {{^}} (void)(!sv.empty()) /* n13 */; |
| 1427 | |
| 1428 | (void)((sv) != (nullptr)) /* n14 */; |
| 1429 | // CHECK-MESSAGES: :[[@LINE-1]]:12: warning: comparing{{.*}}emptiness query |
| 1430 | // CHECK-FIXES: {{^}} (void)(!sv.empty()) /* n14 */; |
| 1431 | |
| 1432 | (void)(nullptr != (sv)) /* n15 */; |
| 1433 | // CHECK-MESSAGES: :[[@LINE-1]]:12: warning: comparing{{.*}}emptiness query |
| 1434 | // CHECK-FIXES: {{^}} (void)(!sv.empty()) /* n15 */; |
| 1435 | |
| 1436 | (void)((nullptr) != (sv)) /* n16 */; |
| 1437 | // CHECK-MESSAGES: :[[@LINE-1]]:12: warning: comparing{{.*}}emptiness query |
| 1438 | // CHECK-FIXES: {{^}} (void)(!sv.empty()) /* n16 */; |
| 1439 | } |
| 1440 | } |
| 1441 | |
| 1442 | void pointer_equality_comparison(std::string_view *sv_ptr) /* o */ { |
| 1443 | // Empty Without Parens |
| 1444 | { |
| 1445 | (void)(*sv_ptr == nullptr) /* o1 */; |
| 1446 | // CHECK-MESSAGES: :[[@LINE-1]]:12: warning: comparing{{.*}}emptiness query |
| 1447 | // CHECK-FIXES: {{^}} (void)(sv_ptr->empty()) /* o1 */; |
| 1448 | |
| 1449 | (void)(*sv_ptr == (nullptr)) /* o2 */; |
| 1450 | // CHECK-MESSAGES: :[[@LINE-1]]:12: warning: comparing{{.*}}emptiness query |
| 1451 | // CHECK-FIXES: {{^}} (void)(sv_ptr->empty()) /* o2 */; |
| 1452 | |
| 1453 | (void)(nullptr == *sv_ptr) /* o3 */; |
| 1454 | // CHECK-MESSAGES: :[[@LINE-1]]:12: warning: comparing{{.*}}emptiness query |
| 1455 | // CHECK-FIXES: {{^}} (void)(sv_ptr->empty()) /* o3 */; |
| 1456 | |
| 1457 | (void)((nullptr) == *sv_ptr) /* o4 */; |
| 1458 | // CHECK-MESSAGES: :[[@LINE-1]]:12: warning: comparing{{.*}}emptiness query |
| 1459 | // CHECK-FIXES: {{^}} (void)(sv_ptr->empty()) /* o4 */; |
| 1460 | } |
| 1461 | |
| 1462 | // Empty With Parens |
| 1463 | { |
| 1464 | (void)((*sv_ptr) == nullptr) /* o5 */; |
| 1465 | // CHECK-MESSAGES: :[[@LINE-1]]:12: warning: comparing{{.*}}emptiness query |
| 1466 | // CHECK-FIXES: {{^}} (void)(sv_ptr->empty()) /* o5 */; |
| 1467 | |
| 1468 | (void)((*sv_ptr) == (nullptr)) /* o6 */; |
| 1469 | // CHECK-MESSAGES: :[[@LINE-1]]:12: warning: comparing{{.*}}emptiness query |
| 1470 | // CHECK-FIXES: {{^}} (void)(sv_ptr->empty()) /* o6 */; |
| 1471 | |
| 1472 | (void)(nullptr == (*sv_ptr)) /* o7 */; |
| 1473 | // CHECK-MESSAGES: :[[@LINE-1]]:12: warning: comparing{{.*}}emptiness query |
| 1474 | // CHECK-FIXES: {{^}} (void)(sv_ptr->empty()) /* o7 */; |
| 1475 | |
| 1476 | (void)((nullptr) == (*sv_ptr)) /* o8 */; |
| 1477 | // CHECK-MESSAGES: :[[@LINE-1]]:12: warning: comparing{{.*}}emptiness query |
| 1478 | // CHECK-FIXES: {{^}} (void)(sv_ptr->empty()) /* o8 */; |
| 1479 | } |
| 1480 | |
| 1481 | // Non-Empty With Parens |
| 1482 | { |
| 1483 | (void)((*sv_ptr) != nullptr) /* o9 */; |
| 1484 | // CHECK-MESSAGES: :[[@LINE-1]]:12: warning: comparing{{.*}}emptiness query |
| 1485 | // CHECK-FIXES: {{^}} (void)(!sv_ptr->empty()) /* o9 */; |
| 1486 | |
| 1487 | (void)((*sv_ptr) != (nullptr)) /* o10 */; |
| 1488 | // CHECK-MESSAGES: :[[@LINE-1]]:12: warning: comparing{{.*}}emptiness query |
| 1489 | // CHECK-FIXES: {{^}} (void)(!sv_ptr->empty()) /* o10 */; |
| 1490 | |
| 1491 | (void)(nullptr != (*sv_ptr)) /* o11 */; |
| 1492 | // CHECK-MESSAGES: :[[@LINE-1]]:12: warning: comparing{{.*}}emptiness query |
| 1493 | // CHECK-FIXES: {{^}} (void)(!sv_ptr->empty()) /* o11 */; |
| 1494 | |
| 1495 | (void)((nullptr) != (*sv_ptr)) /* o12 */; |
| 1496 | // CHECK-MESSAGES: :[[@LINE-1]]:12: warning: comparing{{.*}}emptiness query |
| 1497 | // CHECK-FIXES: {{^}} (void)(!sv_ptr->empty()) /* o12 */; |
| 1498 | } |
| 1499 | |
| 1500 | // Non-Empty Without Parens |
| 1501 | { |
| 1502 | (void)((*sv_ptr) != nullptr) /* o13 */; |
| 1503 | // CHECK-MESSAGES: :[[@LINE-1]]:12: warning: comparing{{.*}}emptiness query |
| 1504 | // CHECK-FIXES: {{^}} (void)(!sv_ptr->empty()) /* o13 */; |
| 1505 | |
| 1506 | (void)((*sv_ptr) != (nullptr)) /* o14 */; |
| 1507 | // CHECK-MESSAGES: :[[@LINE-1]]:12: warning: comparing{{.*}}emptiness query |
| 1508 | // CHECK-FIXES: {{^}} (void)(!sv_ptr->empty()) /* o14 */; |
| 1509 | |
| 1510 | (void)(nullptr != (*sv_ptr)) /* o15 */; |
| 1511 | // CHECK-MESSAGES: :[[@LINE-1]]:12: warning: comparing{{.*}}emptiness query |
| 1512 | // CHECK-FIXES: {{^}} (void)(!sv_ptr->empty()) /* o15 */; |
| 1513 | |
| 1514 | (void)((nullptr) != (*sv_ptr)) /* o16 */; |
| 1515 | // CHECK-MESSAGES: :[[@LINE-1]]:12: warning: comparing{{.*}}emptiness query |
| 1516 | // CHECK-FIXES: {{^}} (void)(!sv_ptr->empty()) /* o16 */; |
| 1517 | } |
| 1518 | } |
| 1519 | |
| 1520 | void equality_comparison_with_temporary(std::string_view sv) /* p */ { |
| 1521 | (void)(sv == std::string_view(nullptr)) /* p1 */; |
| 1522 | // CHECK-MESSAGES: :[[@LINE-1]]:33: warning: constructing{{.*}}default |
| 1523 | // CHECK-FIXES: {{^}} (void)(sv == std::string_view()) /* p1 */; |
| 1524 | |
| 1525 | (void)(sv == std::string_view{nullptr}) /* p2 */; |
| 1526 | // CHECK-MESSAGES: :[[@LINE-1]]:33: warning: constructing{{.*}}default |
| 1527 | // CHECK-FIXES: {{^}} (void)(sv == std::string_view{}) /* p2 */; |
| 1528 | |
| 1529 | (void)(sv == (std::string_view) nullptr) /* p3 */; |
| 1530 | // CHECK-MESSAGES: :[[@LINE-1]]:35: warning: constructing{{.*}}default |
| 1531 | // CHECK-FIXES: {{^}} (void)(sv == (std::string_view) {}) /* p3 */; |
| 1532 | |
| 1533 | (void)(sv == (std::string_view){nullptr}) /* p4 */; |
| 1534 | // CHECK-MESSAGES: :[[@LINE-1]]:35: warning: constructing{{.*}}default |
| 1535 | // CHECK-FIXES: {{^}} (void)(sv == (std::string_view){}) /* p4 */; |
| 1536 | |
| 1537 | (void)(sv == static_cast<SV>(nullptr)) /* p5 */; |
| 1538 | // CHECK-MESSAGES: :[[@LINE-1]]:32: warning: casting{{.*}}empty string |
| 1539 | // CHECK-FIXES: {{^}} (void)(sv == static_cast<SV>("")) /* p5 */; |
| 1540 | } |
| 1541 | |
| 1542 | void return_statement() /* q */ { |
| 1543 | // Return Statement |
| 1544 | { |
| 1545 | []() -> SV { return nullptr; } /* q1 */; |
| 1546 | // CHECK-MESSAGES: :[[@LINE-1]]:25: warning: constructing{{.*}}default |
| 1547 | // CHECK-FIXES: {{^}} []() -> SV { return {}; } /* q1 */; |
| 1548 | |
| 1549 | []() -> SV { return (nullptr); } /* q2 */; |
| 1550 | // CHECK-MESSAGES: :[[@LINE-1]]:25: warning: constructing{{.*}}default |
| 1551 | // CHECK-FIXES: {{^}} []() -> SV { return {}; } /* q2 */; |
| 1552 | |
| 1553 | []() -> SV { return {nullptr}; } /* q3 */; |
| 1554 | // CHECK-MESSAGES: :[[@LINE-1]]:25: warning: constructing{{.*}}default |
| 1555 | // CHECK-FIXES: {{^}} []() -> SV { return {}; } /* q3 */; |
| 1556 | |
| 1557 | []() -> SV { return {(nullptr)}; } /* q4 */; |
| 1558 | // CHECK-MESSAGES: :[[@LINE-1]]:25: warning: constructing{{.*}}default |
| 1559 | // CHECK-FIXES: {{^}} []() -> SV { return {}; } /* q4 */; |
| 1560 | |
| 1561 | []() -> SV { return {{nullptr}}; } /* q5 */; |
| 1562 | // CHECK-MESSAGES: :[[@LINE-1]]:25: warning: constructing{{.*}}default |
| 1563 | // CHECK-FIXES: {{^}} []() -> SV { return {}; } /* q5 */; |
| 1564 | |
| 1565 | []() -> SV { return {{(nullptr)}}; } /* q6 */; |
| 1566 | // CHECK-MESSAGES: :[[@LINE-1]]:25: warning: constructing{{.*}}default |
| 1567 | // CHECK-FIXES: {{^}} []() -> SV { return {}; } /* q6 */; |
| 1568 | |
| 1569 | []() -> SV { return {{}}; } /* q7 */; // Default `const CharT*` |
| 1570 | // CHECK-MESSAGES: :[[@LINE-1]]:25: warning: constructing{{.*}}default |
| 1571 | // CHECK-FIXES: {{^}} []() -> SV { return {}; } /* q7 */; |
| 1572 | } |
| 1573 | |
| 1574 | // Return Statement With Temporary |
| 1575 | { |
| 1576 | []() -> SV { return SV(nullptr); } /* q8 */; |
| 1577 | // CHECK-MESSAGES: :[[@LINE-1]]:28: warning: constructing{{.*}}default |
| 1578 | // CHECK-FIXES: {{^}} []() -> SV { return SV(); } /* q8 */; |
| 1579 | |
| 1580 | []() -> SV { return SV{nullptr}; } /* q9 */; |
| 1581 | // CHECK-MESSAGES: :[[@LINE-1]]:28: warning: constructing{{.*}}default |
| 1582 | // CHECK-FIXES: {{^}} []() -> SV { return SV{}; } /* q9 */; |
| 1583 | |
| 1584 | []() -> SV { return (SV) nullptr; } /* q10 */; |
| 1585 | // CHECK-MESSAGES: :[[@LINE-1]]:30: warning: constructing{{.*}}default |
| 1586 | // CHECK-FIXES: {{^}} []() -> SV { return (SV) {}; } /* q10 */; |
| 1587 | |
| 1588 | []() -> SV { return (SV){nullptr}; } /* q11 */; |
| 1589 | // CHECK-MESSAGES: :[[@LINE-1]]:30: warning: constructing{{.*}}default |
| 1590 | // CHECK-FIXES: {{^}} []() -> SV { return (SV){}; } /* q11 */; |
| 1591 | |
| 1592 | []() -> SV { return static_cast<SV>(nullptr); } /* q12 */; |
| 1593 | // CHECK-MESSAGES: :[[@LINE-1]]:41: warning: casting{{.*}}empty string |
| 1594 | // CHECK-FIXES: {{^}} []() -> SV { return static_cast<SV>(""); } /* q12 */; |
| 1595 | } |
| 1596 | } |
| 1597 | |
| 1598 | void constructor_invocation() /* r */ { |
| 1599 | struct AcceptsSV { |
| 1600 | explicit AcceptsSV(std::string_view) {} |
| 1601 | } r1(nullptr); |
| 1602 | // CHECK-MESSAGES: :[[@LINE-1]]:8: warning: passing{{.*}}empty string |
| 1603 | // CHECK-FIXES: {{^}} } r1(""); |
| 1604 | |
| 1605 | (void)(AcceptsSV{nullptr}) /* r2 */; |
| 1606 | // CHECK-MESSAGES: :[[@LINE-1]]:20: warning: passing{{.*}}empty string |
| 1607 | // CHECK-FIXES: {{^}} (void)(AcceptsSV{""}) /* r2 */; |
| 1608 | |
| 1609 | AcceptsSV r3{nullptr}; |
| 1610 | // CHECK-MESSAGES: :[[@LINE-1]]:16: warning: passing{{.*}}empty string |
| 1611 | // CHECK-FIXES: {{^}} AcceptsSV r3{""}; |
| 1612 | } |
| 1613 | |