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

Aaron Ballman via cfe-dev cfe-dev at lists.llvm.org
Fri Dec 20 13:06:27 PST 2019


On Fri, Dec 20, 2019 at 4:01 PM Stephen Kelly via cfe-dev
<cfe-dev at lists.llvm.org> 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.

I'm generally in favor of this path forward. I think this is the
correct default and allows a more gentle introduction to AST matchers
for people new to the project (which helps with introducing new
clang-tidy checks) while still allowing people who need to get into
the nitty gritty details of the AST to do so as needed. Thank you for
the efforts!

CCing Manual, Alex, and Sam because they do a lot of work on the
matcher interfaces as well.

~Aaron

>
> Thanks,
>
> Stephen.
> _______________________________________________
> cfe-dev mailing list
> cfe-dev at lists.llvm.org
> https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-dev


More information about the cfe-dev mailing list