================
@@ -0,0 +1,20 @@
+#include "../ClangTidyCheck.h"
+
+namespace clang::tidy::modernize {
+
+class MakeFunctionToDirectCheck : public ClangTidyCheck {
----------------
denzor200 wrote:

It can be refactored with `TransformerClangTidyCheck` usage. Sample for only 
`std::make_pair` function:
```
auto WarningMessage = cat("use class template argument deduction (CTAD) "
                          "instead of std::make_pair");

return makeRule(
  declStmt(hasSingleDecl(varDecl(
      hasType(autoType()), hasTypeLoc(typeLoc().bind("auto_type_loc")),
      hasInitializer(hasDescendant(
          callExpr(callee(functionDecl(hasName("std::make_pair"))))
              .bind("make_call")))))),
  {changeTo(node("auto_type_loc"), cat("std::pair")),
   changeTo(node("make_call"), cat("{", callArgs("make_call"), "}"))},
  WarningMessage);
```

Look at "abseil-cleanup-ctad" check's internals for more details.
I'm not sure is it possible to change `make_unique` and `make_shared` using 
this method, but they should not  be in this check as it mentioned before(or at 
least they must be hidded via option).

BTW it will produce better FixItHint:
```
- auto p1 = std::make_pair(1, "test");
+ std::pair p1 = {1, "test"};
```

https://github.com/llvm/llvm-project/pull/118120
_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to