diff options
Diffstat (limited to 'clang-tools-extra/clang-tidy')
-rw-r--r-- | clang-tools-extra/clang-tidy/readability/RedundantStringCStrCheck.cpp | 8 |
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); |