lebedev.ri marked 3 inline comments as done.
lebedev.ri added inline comments.


================
Comment at: include/clang/ASTMatchers/ASTMatchers.h:6456
+  // Note that we have recieved a *matcher* for the clause, not the
+  // OpenMPClauseKind. We now need to extract the 'return' type of said 
matcher,
+  // and convert it to the OpenMPClauseKind, so we can finally use that.
----------------
gribozavr wrote:
> lebedev.ri wrote:
> > gribozavr wrote:
> > > lebedev.ri wrote:
> > > > gribozavr wrote:
> > > > > Why not make `isAllowedToContainClause` take an `OpenMPClauseKind` 
> > > > > enum value?
> > > > > 
> > > > > I don't see right now advantages for taking a matcher.  (For example, 
> > > > > it can't be a more complex matcher with inner matchers, it can't be a 
> > > > > disjunction of matchers etc.)
> > > > I don't feel like it, it's uglier.
> > > > The matcher is documented, `OpenMPClauseKind` is not documented.
> > > > Also, how will passing some random enum work with e.g. clang-query?
> > > > 
> > > There are dozens of clauses in `OpenMPClauseKind`.  We would have to 
> > > replicate them all as matchers to provide a useful API.
> > > 
> > > > Also, how will passing some random enum work with e.g. clang-query?
> > > 
> > > See `llvm/tools/clang/lib/ASTMatchers/Dynamic/Marshallers.h`.
> > True. Also, but there's dosens of Stmt types, and there is no overload that 
> > takes `StmtClass` enum.
> For Stmts, we do have dozens of individual matchers for them.
> 
> The point of your work is to add ASTMatchers for OpenMP, right?  However, if 
> there are no matchers for a reasonable amount of AST surface, it is as good 
> as if the matchers are not there, because prospective users won't be able to 
> use them.
> 
> I don't particularly care how exactly this is achieved, through individual 
> matchers or through a matcher that takes an enum.  However, I want to make 
> sure that if you're going through all this trouble to add matchers, the 
> resulting API should cover a good amount of AST.
> 
> The reason why I suggested to pass the enum to the matcher is simply because 
> it is less code duplication, less work, and more reliable code (since there 
> will be only one matcher to review, test, and maintain, instead of 
> combinations of matchers).
> 
> Another reason to not use an inner matcher here is the peculiar semantics of 
> this function -- it does not evaluate the matcher, and it does not accept a 
> matcher expression of any shape.
> The point of your work is to add ASTMatchers for OpenMP, right?

Absolutely not.
D57113 + D59466 is the one and only point, to address the bugs i have 
personally encountered.
The whole reason why i have started off with NOT adding these matchers to the 
`ASTMatchers.h`,
but keeping them at least initially internal to the checks was to avoid all 
this bikeshedding.


Repository:
  rC Clang

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

https://reviews.llvm.org/D57112



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

Reply via email to