ymandel added inline comments.
================
Comment at: clang/include/clang/ASTMatchers/ASTMatchers.h:7018
+AST_MATCHER_P(clang::ParmVarDecl, isAtPosition, unsigned, N) {
+  return parmVarDecl(hasAncestor(functionDecl(
+                         hasParameter(N, parmVarDecl().bind("this_decl")))),
----------------
I think that `hasAncestor` will keep going up the chain of ancestors if it 
fails the match on the first surrounding `functionDecl`. That could make this 
matcher very expensive.  Why hasParent (or, whatever combination of `hasParent` 
and other matchers needed to precisely describe the immediately surrounding 
`functionDecl`)?


================
Comment at: clang/include/clang/ASTMatchers/ASTMatchers.h:7019
+  return parmVarDecl(hasAncestor(functionDecl(
+                         hasParameter(N, parmVarDecl().bind("this_decl")))),
+                     equalsBoundNode("this_decl"))
----------------
Note that "this_decl" might be in use the by the caller (unlikely, but 
possible).  I'd suggest something less user friendly instead (for example, 
prefixing with the name of the matcher). That said, any binding inside a 
manager runs risk of conflict, because we don't have any scoping or fresh-name 
generation facilities, so any name will run some risk.


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D80603/new/

https://reviews.llvm.org/D80603



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

Reply via email to