Use ASTDumper to dump the AST from clang-query
authorStephen Kelly <steveire@gmail.com>
Fri, 6 Dec 2019 23:26:59 +0000 (23:26 +0000)
committerStephen Kelly <steveire@gmail.com>
Fri, 6 Dec 2019 23:38:56 +0000 (23:38 +0000)
Summary:
This way, the output is not limited by the various API differences
between the dump() member functions.  For example, all dumps are now in
color, while that used to be the case only for Decls and Stmts, but not
Types.

Additionally, while DynTypedNode::dump (which was used up to now) was
limited to dumping only Decls, Stmts and Types, this makes clang-query
support everything ASTNodeTraverser supports.

Reviewers: aaron.ballman

Subscribers: cfe-commits

Tags: #clang

Differential Revision: https://reviews.llvm.org/D62056

clang-tools-extra/clang-query/Query.cpp

index eea0e77..675fd96 100644 (file)
@@ -8,6 +8,7 @@
 
 #include "Query.h"
 #include "QuerySession.h"
+#include "clang/AST/ASTDumper.h"
 #include "clang/ASTMatchers/ASTMatchFinder.h"
 #include "clang/Frontend/ASTUnit.h"
 #include "clang/Frontend/TextDiagnostic.h"
@@ -128,7 +129,11 @@ bool MatchQuery::run(llvm::raw_ostream &OS, QuerySession &QS) const {
         }
         if (QS.DetailedASTOutput) {
           OS << "Binding for \"" << BI->first << "\":\n";
-          BI->second.dump(OS, AST->getSourceManager());
+          const ASTContext &Ctx = AST->getASTContext();
+          const SourceManager &SM = Ctx.getSourceManager();
+          ASTDumper Dumper(OS, &Ctx.getCommentCommandTraits(), &SM,
+                SM.getDiagnostics().getShowColors(), Ctx.getPrintingPolicy());
+          Dumper.Visit(BI->second);
           OS << "\n";
         }
       }