alexshap added a comment.

> My only high-level comment so far (will try to review in more detail later) 
> is: I find it strange to mix ASTMatchers and a >RecursiveASTVisitor in the 
> same tool. It seem that if you are using ASTMatchers internally for other 
> things, you should also >use ASTMatchers to find all the constructors etc. 
> That should (I hope) make the code a bit simpler.


i can use matchers (and actually i did that  originally) for everything but can 
try to explain the rationale  behind my (current) approach:
Matcher is used for the lookup of the definition of the record by name, the 
list of ctors is extracted from the definition (Defintion->ctors()) and doesn't 
require any extra AST traverses. However to handle aggregates and unified 
initialization we need to traverse the AST and find all the call-sites. It's 
easy to do it with matchers as well however i was keeping in mind the future 
potential features (like changing the order of constructor arguments) - in that 
case one needs just to add another Visit* method to ReorderingASTVisitor 
instead of matching the full AST against the new Matcher (so i would expect it 
be faster and the code probably will be more concise).


Repository:
  rL LLVM

https://reviews.llvm.org/D23279



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

Reply via email to