Author: sbenza Date: Mon Jan 8 07:59:08 2018 New Revision: 322002 URL: http://llvm.org/viewvc/llvm-project?rev=322002&view=rev Log: [clang-tidy] Fix DanglingHandleCheck for the correct conversion operation between basic_string and basic_string_view.
Summary: Fix DanglingHandleCheck to handle the final implementation of std::string and std::string_view. These use a conversion operator instead of a conversion constructor. Reviewers: hokein Subscribers: klimek, xazax.hun, cfe-commits Differential Revision: https://reviews.llvm.org/D41779 Modified: clang-tools-extra/trunk/clang-tidy/bugprone/DanglingHandleCheck.cpp clang-tools-extra/trunk/test/clang-tidy/bugprone-dangling-handle.cpp Modified: clang-tools-extra/trunk/clang-tidy/bugprone/DanglingHandleCheck.cpp URL: http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/clang-tidy/bugprone/DanglingHandleCheck.cpp?rev=322002&r1=322001&r2=322002&view=diff ============================================================================== --- clang-tools-extra/trunk/clang-tidy/bugprone/DanglingHandleCheck.cpp (original) +++ clang-tools-extra/trunk/clang-tidy/bugprone/DanglingHandleCheck.cpp Mon Jan 8 07:59:08 2018 @@ -25,8 +25,12 @@ namespace { ast_matchers::internal::BindableMatcher<Stmt> handleFrom(const ast_matchers::internal::Matcher<RecordDecl> &IsAHandle, const ast_matchers::internal::Matcher<Expr> &Arg) { - return cxxConstructExpr(hasDeclaration(cxxMethodDecl(ofClass(IsAHandle))), - hasArgument(0, Arg)); + return expr( + anyOf(cxxConstructExpr(hasDeclaration(cxxMethodDecl(ofClass(IsAHandle))), + hasArgument(0, Arg)), + cxxMemberCallExpr(hasType(cxxRecordDecl(IsAHandle)), + callee(memberExpr(member(cxxConversionDecl()))), + on(Arg)))); } ast_matchers::internal::Matcher<Stmt> handleFromTemporaryValue( Modified: clang-tools-extra/trunk/test/clang-tidy/bugprone-dangling-handle.cpp URL: http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/test/clang-tidy/bugprone-dangling-handle.cpp?rev=322002&r1=322001&r2=322002&view=diff ============================================================================== --- clang-tools-extra/trunk/test/clang-tidy/bugprone-dangling-handle.cpp (original) +++ clang-tools-extra/trunk/test/clang-tidy/bugprone-dangling-handle.cpp Mon Jan 8 07:59:08 2018 @@ -45,10 +45,15 @@ class map { value_type& operator[](Key&& key); }; +class basic_string_view; + class basic_string { public: basic_string(); basic_string(const char*); + + operator basic_string_view() const noexcept; + ~basic_string(); }; @@ -57,7 +62,6 @@ typedef basic_string string; class basic_string_view { public: basic_string_view(const char*); - basic_string_view(const basic_string&); }; typedef basic_string_view string_view; _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits