[PATCH] D54405: Record whether a AST Matcher constructs a Node

Aaron Ballman via Phabricator via cfe-commits cfe-commits at lists.llvm.org
Sun Nov 11 15:47:49 PST 2018


aaron.ballman added inline comments.


================
Comment at: lib/ASTMatchers/Dynamic/Registry.cpp:70
+  void registerIfNodeMatcher(MatcherType,
+                             internal::MatcherDescriptor *matchDescriptor,
+                             StringRef) {}
----------------
Fix `matchDescriptor` for coding conventions, but please don't reuse the name of a type when fixing it. :-)


================
Comment at: lib/ASTMatchers/Dynamic/Registry.cpp:76
+      ast_matchers::internal::VariadicAllOfMatcher<ResultT> VarFunc,
+      internal::MatcherDescriptor *matchDescriptor, StringRef MatcherName) {
+    auto K = ast_type_traits::ASTNodeKind::getFromNodeKind<
----------------
Same comment here.


================
Comment at: lib/ASTMatchers/Dynamic/Registry.cpp:77
+      internal::MatcherDescriptor *matchDescriptor, StringRef MatcherName) {
+    auto K = ast_type_traits::ASTNodeKind::getFromNodeKind<
+        typename ast_matchers::internal::VariadicAllOfMatcher<ResultT>::Type>();
----------------
Mildly not keen on the use of `auto` here. It's a factory function, so it kind of names the resulting type, but it also looks like the type will be `ast_matchers::internal::VariadicAllOfMatcher<ResultT>::Type` from the template argument, which is incorrect.


================
Comment at: lib/ASTMatchers/Dynamic/Registry.cpp:79
+        typename ast_matchers::internal::VariadicAllOfMatcher<ResultT>::Type>();
+    if (!K.isNone()) {
+      NodeConstructors[K] = std::make_pair(MatcherName, matchDescriptor);
----------------
Elide braces.


================
Comment at: lib/ASTMatchers/Dynamic/Registry.cpp:88
+          VarFunc,
+      internal::MatcherDescriptor *matchDescriptor, StringRef MatcherName) {
+    auto K = ast_type_traits::ASTNodeKind::getFromNodeKind<DerivedT>();
----------------
Same `matchDescriptor` here.


================
Comment at: lib/ASTMatchers/Dynamic/Registry.cpp:89
+      internal::MatcherDescriptor *matchDescriptor, StringRef MatcherName) {
+    auto K = ast_type_traits::ASTNodeKind::getFromNodeKind<DerivedT>();
+    if (!K.isNone()) {
----------------
Similar comment about `auto` here.


================
Comment at: lib/ASTMatchers/Dynamic/Registry.cpp:90
+    auto K = ast_type_traits::ASTNodeKind::getFromNodeKind<DerivedT>();
+    if (!K.isNone()) {
+      NodeConstructors[K] = std::make_pair(MatcherName, matchDescriptor);
----------------
Elide braces.


Repository:
  rC Clang

https://reviews.llvm.org/D54405





More information about the cfe-commits mailing list