aaron.ballman added a comment.

Generally LGTM but this has no test coverage. What are your plans for how you 
want to see this proceed? Do you intend to commit everything in one batch once 
all of the reviews are accepted, or do piecemeal commits?



================
Comment at: lib/ASTMatchers/Dynamic/Registry.cpp:565
+template <typename T>
+void processAcceptableMatchers(ArrayRef<ArgKind> AcceptedTypes, T func) {
 
----------------
I'd prefer `T` to be named `Callable` and `func` to be `Func`. Also, I think it 
should be `Callable &&Func`.


================
Comment at: lib/ASTMatchers/Dynamic/Registry.cpp:595
     if (!RetKinds.empty() && MaxSpecificity > 0) {
-      std::string Decl;
-      llvm::raw_string_ostream OS(Decl);
-
-      if (IsPolymorphic) {
-        OS << "Matcher<T> " << Name << "(Matcher<T>";
-      } else {
-        OS << "Matcher<" << RetKinds << "> " << Name << "(";
-        for (const std::vector<ArgKind> &Arg : ArgsKinds) {
-          if (&Arg != &ArgsKinds[0])
-            OS << ", ";
-
-          bool FirstArgKind = true;
-          std::set<ASTNodeKind> MatcherKinds;
-          // Two steps. First all non-matchers, then matchers only.
-          for (const ArgKind &AK : Arg) {
-            if (AK.getArgKind() == ArgKind::AK_Matcher) {
-              MatcherKinds.insert(AK.getMatcherKind());
-            } else {
-              if (!FirstArgKind) OS << "|";
-              FirstArgKind = false;
-              OS << AK.asString();
+      func(Name, Matcher, RetKinds, ArgsKinds, MaxSpecificity);
+    }
----------------
Then you can use `std::forward<Callable>(Func)(...);` because we can't use 
`std::invoke()` yet.


Repository:
  rC Clang

https://reviews.llvm.org/D54402



_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to