summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTamas Berghammer <tamas@hudson-trading.com>2023-01-02 06:24:00 -0500
committerTamas Berghammer <tamas@hudson-trading.com>2023-01-02 06:24:00 -0500
commitf325b5b8cb1d6c16dd04c88380caea7b0a7750eb (patch)
tree3533aef79d779c9858c768f6c8eb326c3ca6e02c /clang-tools-extra/clang-tidy/readability
parent[mlir][llvm] Make the import of LLVM IR intrinsics extensible. (diff)
downloadllvm-project-f325b5b8cb1d6c16dd04c88380caea7b0a7750eb.tar.gz
llvm-project-f325b5b8cb1d6c16dd04c88380caea7b0a7750eb.tar.bz2
llvm-project-f325b5b8cb1d6c16dd04c88380caea7b0a7750eb.zip
[clang-tidy] Support std::string_view in readability-redundant-string-cstr
Previously we were matching constructor calls for std::string and llvm::StringRef and this change extends this set with including std::string_view as well. Reviewed By: njames93, carlosgalvezp Differential Revision: https://reviews.llvm.org/D140018
Diffstat (limited to 'clang-tools-extra/clang-tidy/readability')
-rw-r--r--clang-tools-extra/clang-tidy/readability/RedundantStringCStrCheck.cpp8
1 files changed, 7 insertions, 1 deletions
diff --git a/clang-tools-extra/clang-tidy/readability/RedundantStringCStrCheck.cpp b/clang-tools-extra/clang-tidy/readability/RedundantStringCStrCheck.cpp
index 79211731ff7b..9ecd6d612e0c 100644
--- a/clang-tools-extra/clang-tidy/readability/RedundantStringCStrCheck.cpp
+++ b/clang-tools-extra/clang-tidy/readability/RedundantStringCStrCheck.cpp
@@ -86,6 +86,11 @@ void RedundantStringCStrCheck::registerMatchers(
// be present explicitly.
hasArgument(1, cxxDefaultArgExpr()))));
+ // Match string constructor.
+ const auto StringViewConstructorExpr = cxxConstructExpr(
+ argumentCountIs(1),
+ hasDeclaration(cxxMethodDecl(hasName("basic_string_view"))));
+
// Match a call to the string 'c_str()' method.
const auto StringCStrCallExpr =
cxxMemberCallExpr(on(StringExpr.bind("arg")),
@@ -101,7 +106,8 @@ void RedundantStringCStrCheck::registerMatchers(
traverse(
TK_AsIs,
cxxConstructExpr(
- StringConstructorExpr, hasArgument(0, StringCStrCallExpr),
+ anyOf(StringConstructorExpr, StringViewConstructorExpr),
+ hasArgument(0, StringCStrCallExpr),
unless(anyOf(HasRValueTempParent, hasParent(cxxBindTemporaryExpr(
HasRValueTempParent)))))),
this);