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
diff --git a/clang-tools-extra/clang-tidy/modernize/MakeUniqueCheck.cpp b/clang-tools-extra/clang-tidy/modernize/MakeUniqueCheck.cpp
index 77c6849..bdf5538 100644
--- a/clang-tools-extra/clang-tidy/modernize/MakeUniqueCheck.cpp
+++ b/clang-tools-extra/clang-tidy/modernize/MakeUniqueCheck.cpp
@@ -29,10 +29,18 @@
             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)))))