diff options
Diffstat (limited to 'clang-tools-extra/test/clang-tidy/readability-redundant-string-cstr.cpp')
| -rw-r--r-- | clang-tools-extra/test/clang-tidy/readability-redundant-string-cstr.cpp | 42 |
1 files changed, 42 insertions, 0 deletions
diff --git a/clang-tools-extra/test/clang-tidy/readability-redundant-string-cstr.cpp b/clang-tools-extra/test/clang-tidy/readability-redundant-string-cstr.cpp new file mode 100644 index 00000000000..42f4307b188 --- /dev/null +++ b/clang-tools-extra/test/clang-tidy/readability-redundant-string-cstr.cpp @@ -0,0 +1,42 @@ +// RUN: $(dirname %s)/check_clang_tidy.sh %s readability-redundant-string-cstr %t +// REQUIRES: shell + +namespace std { +template <typename T> +class allocator {}; +template <typename T> +class char_traits {}; +template <typename C, typename T, typename A> +struct basic_string { + basic_string(); + basic_string(const C *p, const A &a = A()); + const C *c_str() const; +}; +typedef basic_string<char, std::char_traits<char>, std::allocator<char>> string; +} +namespace llvm { +struct StringRef { + StringRef(const char *p); + StringRef(const std::string &); +}; +} + +void f1(const std::string &s) { + f1(s.c_str()); + // CHECK-MESSAGES: :[[@LINE-1]]:6: warning: redundant call to `c_str()` [readability-redundant-string-cstr] + // CHECK-FIXES: {{^ }}f1(s);{{$}} +} +void f2(const llvm::StringRef r) { + std::string s; + f2(s.c_str()); + // CHECK-MESSAGES: :[[@LINE-1]]:6: warning: redundant call {{.*}} + // CHECK-FIXES: {{^ }}std::string s;{{$}} + // CHECK-FIXES-NEXT: {{^ }}f2(s);{{$}} +} +void f3(const llvm::StringRef &r) { + std::string s; + f3(s.c_str()); + // CHECK-MESSAGES: :[[@LINE-1]]:6: warning: redundant call {{.*}} + // CHECK-FIXES: {{^ }}std::string s;{{$}} + // CHECK-FIXES-NEXT: {{^ }}f3(s);{{$}} +} |

