Use better mocks in modernize-make-unique, and fix matcher.

Summary: Add the second template argument to the unique_ptr mock, and update the matcher so that it only matches against cases where the second argument is the default.

Reviewers: klimek

Subscribers: alexfh, cfe-commits

Differential Revision: http://reviews.llvm.org/D13433

llvm-svn: 249305
This commit is contained in:
Angel Garcia Gomez 2015-10-05 12:20:17 +00:00
parent 057f0a68cc
commit b9f3059509
2 changed files with 15 additions and 4 deletions

View File

@ -29,10 +29,18 @@ void MakeUniqueCheck::registerMatchers(MatchFinder *Finder) {
cxxConstructExpr(
hasType(qualType(hasDeclaration(classTemplateSpecializationDecl(
matchesName("::std::unique_ptr"),
templateArgumentCountIs(1),
templateArgumentCountIs(2),
hasTemplateArgument(0, templateArgument(refersToType(
qualType().bind(PointerType)))),
hasTemplateArgument(
0, templateArgument(
refersToType(qualType().bind(PointerType)))))))),
1, templateArgument(refersToType(qualType(
hasDeclaration(classTemplateSpecializationDecl(
matchesName("::std::default_delete"),
templateArgumentCountIs(1),
hasTemplateArgument(
0, templateArgument(refersToType(
qualType(equalsBoundNode(
PointerType))))))))))))))),
argumentCountIs(1),
hasArgument(0, cxxNewExpr(hasType(pointsTo(qualType(
equalsBoundNode(PointerType)))))

View File

@ -2,7 +2,10 @@
namespace std {
template <typename type>
template <typename T>
class default_delete {};
template <typename type, typename Deleter = std::default_delete<type>>
class unique_ptr {
public:
unique_ptr(type *ptr);