[PATCH] D76029: Summary: Fix DanglingHandleCheck to match conversion operator whose return type is a type alias, e.g. `std::string`'s conversion operator to `std::string_view`.
Xiaoyi Zhang via Phabricator via cfe-commits
cfe-commits at lists.llvm.org
Wed Mar 11 15:20:05 PDT 2020
zhangxy988 created this revision.
Herald added a project: clang.
Herald added a subscriber: cfe-commits.
zhangxy988 added a reviewer: alexfh.
Repository:
rG LLVM Github Monorepo
https://reviews.llvm.org/D76029
Files:
clang-tools-extra/clang-tidy/bugprone/DanglingHandleCheck.cpp
clang-tools-extra/test/clang-tidy/checkers/bugprone-dangling-handle.cpp
Index: clang-tools-extra/test/clang-tidy/checkers/bugprone-dangling-handle.cpp
===================================================================
--- clang-tools-extra/test/clang-tidy/checkers/bugprone-dangling-handle.cpp
+++ clang-tools-extra/test/clang-tidy/checkers/bugprone-dangling-handle.cpp
@@ -45,26 +45,30 @@
value_type& operator[](Key&& key);
};
+template <typename _CharT>
class basic_string_view;
+template <typename _CharT>
class basic_string {
- public:
+public:
+ typedef basic_string_view<_CharT> __self_view;
basic_string();
basic_string(const char*);
- operator basic_string_view() const noexcept;
+ operator __self_view() const noexcept;
~basic_string();
};
-typedef basic_string string;
+typedef basic_string<char> string;
+template <typename _CharT>
class basic_string_view {
- public:
+public:
basic_string_view(const char*);
};
-typedef basic_string_view string_view;
+typedef basic_string_view<char> string_view;
} // namespace std
Index: clang-tools-extra/clang-tidy/bugprone/DanglingHandleCheck.cpp
===================================================================
--- clang-tools-extra/clang-tidy/bugprone/DanglingHandleCheck.cpp
+++ clang-tools-extra/clang-tidy/bugprone/DanglingHandleCheck.cpp
@@ -27,7 +27,8 @@
return expr(
anyOf(cxxConstructExpr(hasDeclaration(cxxMethodDecl(ofClass(IsAHandle))),
hasArgument(0, Arg)),
- cxxMemberCallExpr(hasType(cxxRecordDecl(IsAHandle)),
+ cxxMemberCallExpr(hasType(hasUnqualifiedDesugaredType(recordType(
+ hasDeclaration(cxxRecordDecl(IsAHandle))))),
callee(memberExpr(member(cxxConversionDecl()))),
on(Arg))));
}
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D76029.249769.patch
Type: text/x-patch
Size: 1788 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20200311/9d0ba34d/attachment-0001.bin>
More information about the cfe-commits
mailing list