diff options
author | Alexander Kornienko <alexfh@google.com> | 2015-03-16 00:32:25 +0000 |
---|---|---|
committer | Alexander Kornienko <alexfh@google.com> | 2015-03-16 00:32:25 +0000 |
commit | 57a5c6b56c782d578d86cbf2e58bb403719afdee (patch) | |
tree | 640406129f00eb22d7ed054a054bf4c32f60397d /clang-tools-extra/test/clang-tidy/readability-redundant-string-cstr.cpp | |
parent | 208caf22d97e0ad26c7c5dffed1a371c2dbb3a48 (diff) | |
download | bcm5719-llvm-57a5c6b56c782d578d86cbf2e58bb403719afdee.tar.gz bcm5719-llvm-57a5c6b56c782d578d86cbf2e58bb403719afdee.zip |
Move remove-cstr-calls from a standalone executable to a clang-tidy check readability-redundant-string-cstr
http://reviews.llvm.org/D7318
Patch by Richard Thomson!
llvm-svn: 232338
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);{{$}} +} |