[PATCH] D61835: Extract ASTDumper to a header file

Stephen Kelly via Phabricator via cfe-commits cfe-commits at lists.llvm.org
Thu May 16 13:27:36 PDT 2019


steveire added a comment.

In D61835#1505314 <https://reviews.llvm.org/D61835#1505314>, @aaron.ballman wrote:

> In D61835#1505280 <https://reviews.llvm.org/D61835#1505280>, @steveire wrote:
>
> > In D61835#1505228 <https://reviews.llvm.org/D61835#1505228>, @aaron.ballman wrote:
> >
> > > In D61835#1505202 <https://reviews.llvm.org/D61835#1505202>, @steveire wrote:
> > >
> > > > 3. Anyone who wants traversal in the same way that dumping is done and who needs to call API on the instance which is provided by ASTNodeTraverser (which ASTDumper inherits) needs to use ASTDumper. For example my UI. See my EuroLLVM talk for more: https://steveire.wordpress.com/2019/04/30/the-future-of-ast-matching-refactoring-tools-eurollvm-and-accu/
> > >
> > >
> > > Do they? Why is the `ASTNodeTraverser` insufficient?
> >
> >
> > It doesn't have the same behavior as `ASTDumper`, because `ASTDumper` "overrides" some `Visit` metthods.
>
>
> I'm aware that they're different, but I may not have been sufficiently clear. I'm saying that the only public APIs I think a user should be calling are inherited from `ASTNodeTraverser` and not `ASTDumper`, so it is not required to expose `ASTDumper` directly, only a way to get an `ASTNodeTraverser` reference/pointer to an `ASTDumper` instance so that you get the correct virtual dispatch. e.g., `ASTNodeTraverser *getSomethingThatActsLikeAnASTDumper() { return new ASTDumper; }`


Perhaps. One way to implement the 'less noise' version of AST output (ie removing pointer addresses etc http://ce.steveire.com/z/HaCLeO ) is to make it an API on the `TextNodeDumper`. Then `ASTDumper` would need a forwarding API for it.

Anyway, your argument also applies to `JSONNodeDumper`, but you put that in a header file. That was sane. We should move `ASTDumper` to a header similarly. (Perhaps a rename of the class would help though?)


Repository:
  rC Clang

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

https://reviews.llvm.org/D61835





More information about the cfe-commits mailing list