[cfe-dev] RFC: Easier AST Matching by Default

Stephen Kelly via cfe-dev cfe-dev at lists.llvm.org
Sun May 24 16:24:57 PDT 2020

On 20/12/2019 21:01, Stephen Kelly via cfe-dev wrote:
> Hi,
> (Apologies if you receive this twice. GMail classified the first one as 
> spam)
> Aaron Ballman and I met by chance in Belfast and we discussed a way 
> forward towards making AST Matchers easier to use, particularly for C++ 
> developers who are not familiar with the details of the Clang AST.
> For those unaware, I expanded on this in the EuroLLVM conference this 
> year, and then expanded on it at ACCU:
>   https://steveire.wordpress.com/2019/04/30/the-future-of-ast-matching
> One step in the process of getting there is changing the default 
> behavior of AST Matchers to ignore invisible nodes while matching using 
> the C++ API, and while matching and dumping AST nodes in clang-query.
> I think this is the most important change in the entire proposal as it 
> sets out the intention of making the AST Matchers easier to use for C++ 
> developers who are not already familiar with Clang APIs.
> To that end, I've written an AST to motivate the change:
> https://docs.google.com/document/d/17Z6gAwwc3HoRXvsy0OdwU0X5MFQEuiGeSu3i6ICOB90 
> We're looking for feedback before pressing forward with the change. I 
> already have some patches written to port clang-tidy and unit tests to 
> account for the change of default.

This change is now in master.

clang-query has also been updated to allow setting the traversal mode. eg:

   set traversal AsIs

Since the original RFC I also added clang-query support to godbolt.org, 
so you can experiment with it there instead of my personal instance of 


If anyone watched my talk from EuroLLVM linked in my blog above, I am 
interested in feedback to know which feature I presented there you would 
most like to see upstreamed.



More information about the cfe-dev mailing list