Index: lib/AST/ASTDumper.cpp =================================================================== --- lib/AST/ASTDumper.cpp +++ lib/AST/ASTDumper.cpp @@ -12,15 +12,9 @@ //===----------------------------------------------------------------------===// #include "clang/AST/ASTDumper.h" -#include "clang/AST/ASTContext.h" #include "clang/AST/DeclLookups.h" -#include "clang/AST/JSONNodeDumper.h" -#include "clang/Basic/Builtins.h" -#include "clang/Basic/Module.h" -#include "clang/Basic/SourceManager.h" -#include "llvm/Support/raw_ostream.h" + using namespace clang; -using namespace clang::comments; void ASTDumper::dumpLookups(const DeclContext *DC, bool DumpDecls) { NodeDumper.AddChild([=] { @@ -148,133 +142,3 @@ void ASTDumper::VisitVarTemplateDecl(const VarTemplateDecl *D) { dumpTemplateDecl(D, false); } - -//===----------------------------------------------------------------------===// -// Type method implementations -//===----------------------------------------------------------------------===// - -void QualType::dump(const char *msg) const { - if (msg) - llvm::errs() << msg << ": "; - dump(); -} - -LLVM_DUMP_METHOD void QualType::dump() const { dump(llvm::errs()); } - -LLVM_DUMP_METHOD void QualType::dump(llvm::raw_ostream &OS) const { - ASTDumper Dumper(OS, nullptr, nullptr); - Dumper.Visit(*this); -} - -LLVM_DUMP_METHOD void Type::dump() const { dump(llvm::errs()); } - -LLVM_DUMP_METHOD void Type::dump(llvm::raw_ostream &OS) const { - QualType(this, 0).dump(OS); -} - -//===----------------------------------------------------------------------===// -// Decl method implementations -//===----------------------------------------------------------------------===// - -LLVM_DUMP_METHOD void Decl::dump() const { dump(llvm::errs()); } - -LLVM_DUMP_METHOD void Decl::dump(raw_ostream &OS, bool Deserialize, - ASTDumpOutputFormat Format) const { - const ASTContext &Ctx = getASTContext(); - const SourceManager &SM = Ctx.getSourceManager(); - - if (ADOF_JSON == Format) { - JSONDumper P(OS, SM, Ctx.getPrintingPolicy()); - (void)Deserialize; // FIXME? - P.Visit(this); - } else { - ASTDumper P(OS, &Ctx.getCommentCommandTraits(), &SM, - SM.getDiagnostics().getShowColors(), Ctx.getPrintingPolicy()); - P.setDeserialize(Deserialize); - P.Visit(this); - } -} - -LLVM_DUMP_METHOD void Decl::dumpColor() const { - const ASTContext &Ctx = getASTContext(); - ASTDumper P(llvm::errs(), &Ctx.getCommentCommandTraits(), - &Ctx.getSourceManager(), /*ShowColors*/ true, - Ctx.getPrintingPolicy()); - P.Visit(this); -} - -LLVM_DUMP_METHOD void DeclContext::dumpLookups() const { - dumpLookups(llvm::errs()); -} - -LLVM_DUMP_METHOD void DeclContext::dumpLookups(raw_ostream &OS, - bool DumpDecls, - bool Deserialize) const { - const DeclContext *DC = this; - while (!DC->isTranslationUnit()) - DC = DC->getParent(); - ASTContext &Ctx = cast(DC)->getASTContext(); - const SourceManager &SM = Ctx.getSourceManager(); - ASTDumper P(OS, &Ctx.getCommentCommandTraits(), &Ctx.getSourceManager(), - SM.getDiagnostics().getShowColors(), Ctx.getPrintingPolicy()); - P.setDeserialize(Deserialize); - P.dumpLookups(this, DumpDecls); -} - -//===----------------------------------------------------------------------===// -// Stmt method implementations -//===----------------------------------------------------------------------===// - -LLVM_DUMP_METHOD void Stmt::dump(SourceManager &SM) const { - dump(llvm::errs(), SM); -} - -LLVM_DUMP_METHOD void Stmt::dump(raw_ostream &OS, SourceManager &SM) const { - ASTDumper P(OS, nullptr, &SM); - P.Visit(this); -} - -LLVM_DUMP_METHOD void Stmt::dump(raw_ostream &OS) const { - ASTDumper P(OS, nullptr, nullptr); - P.Visit(this); -} - -LLVM_DUMP_METHOD void Stmt::dump() const { - ASTDumper P(llvm::errs(), nullptr, nullptr); - P.Visit(this); -} - -LLVM_DUMP_METHOD void Stmt::dumpColor() const { - ASTDumper P(llvm::errs(), nullptr, nullptr, /*ShowColors*/true); - P.Visit(this); -} - -//===----------------------------------------------------------------------===// -// Comment method implementations -//===----------------------------------------------------------------------===// - -LLVM_DUMP_METHOD void Comment::dump() const { - dump(llvm::errs(), nullptr, nullptr); -} - -LLVM_DUMP_METHOD void Comment::dump(const ASTContext &Context) const { - dump(llvm::errs(), &Context.getCommentCommandTraits(), - &Context.getSourceManager()); -} - -void Comment::dump(raw_ostream &OS, const CommandTraits *Traits, - const SourceManager *SM) const { - const FullComment *FC = dyn_cast(this); - if (!FC) - return; - ASTDumper D(OS, Traits, SM); - D.Visit(FC, FC); -} - -LLVM_DUMP_METHOD void Comment::dumpColor() const { - const FullComment *FC = dyn_cast(this); - if (!FC) - return; - ASTDumper D(llvm::errs(), nullptr, nullptr, /*ShowColors*/true); - D.Visit(FC, FC); -} Index: lib/AST/Comment.cpp =================================================================== --- lib/AST/Comment.cpp +++ lib/AST/Comment.cpp @@ -12,6 +12,7 @@ #include "clang/AST/DeclObjC.h" #include "clang/AST/DeclTemplate.h" #include "clang/Basic/CharInfo.h" +#include "clang/AST/ASTDumper.h" #include "llvm/Support/ErrorHandling.h" namespace clang { @@ -374,6 +375,32 @@ return ""; } +LLVM_DUMP_METHOD void Comment::dump() const { + dump(llvm::errs(), nullptr, nullptr); +} + +LLVM_DUMP_METHOD void Comment::dump(const ASTContext &Context) const { + dump(llvm::errs(), &Context.getCommentCommandTraits(), + &Context.getSourceManager()); +} + +void Comment::dump(raw_ostream &OS, const CommandTraits *Traits, + const SourceManager *SM) const { + const FullComment *FC = dyn_cast(this); + if (!FC) + return; + ASTDumper D(OS, Traits, SM); + D.Visit(FC, FC); +} + +LLVM_DUMP_METHOD void Comment::dumpColor() const { + const FullComment *FC = dyn_cast(this); + if (!FC) + return; + ASTDumper D(llvm::errs(), nullptr, nullptr, /*ShowColors*/true); + D.Visit(FC, FC); +} + } // end namespace comments } // end namespace clang Index: lib/AST/DeclBase.cpp =================================================================== --- lib/AST/DeclBase.cpp +++ lib/AST/DeclBase.cpp @@ -19,6 +19,8 @@ #include "clang/AST/DeclCXX.h" #include "clang/AST/DeclContextInternals.h" #include "clang/AST/DeclFriend.h" +#include "clang/AST/JSONNodeDumper.h" +#include "clang/AST/ASTDumper.h" #include "clang/AST/DeclObjC.h" #include "clang/AST/DeclOpenMP.h" #include "clang/AST/DeclTemplate.h" @@ -1969,3 +1971,48 @@ return DD; } + +LLVM_DUMP_METHOD void Decl::dump() const { dump(llvm::errs()); } + +LLVM_DUMP_METHOD void Decl::dump(raw_ostream &OS, bool Deserialize, + ASTDumpOutputFormat Format) const { + const ASTContext &Ctx = getASTContext(); + const SourceManager &SM = Ctx.getSourceManager(); + + if (ADOF_JSON == Format) { + JSONDumper P(OS, SM, Ctx.getPrintingPolicy()); + (void)Deserialize; // FIXME? + P.Visit(this); + } else { + ASTDumper P(OS, &Ctx.getCommentCommandTraits(), &SM, + SM.getDiagnostics().getShowColors(), Ctx.getPrintingPolicy()); + P.setDeserialize(Deserialize); + P.Visit(this); + } +} + +LLVM_DUMP_METHOD void Decl::dumpColor() const { + const ASTContext &Ctx = getASTContext(); + ASTDumper P(llvm::errs(), &Ctx.getCommentCommandTraits(), + &Ctx.getSourceManager(), /*ShowColors*/ true, + Ctx.getPrintingPolicy()); + P.Visit(this); +} + +LLVM_DUMP_METHOD void DeclContext::dumpLookups() const { + dumpLookups(llvm::errs()); +} + +LLVM_DUMP_METHOD void DeclContext::dumpLookups(raw_ostream &OS, + bool DumpDecls, + bool Deserialize) const { + const DeclContext *DC = this; + while (!DC->isTranslationUnit()) + DC = DC->getParent(); + ASTContext &Ctx = cast(DC)->getASTContext(); + const SourceManager &SM = Ctx.getSourceManager(); + ASTDumper P(OS, &Ctx.getCommentCommandTraits(), &Ctx.getSourceManager(), + SM.getDiagnostics().getShowColors(), Ctx.getPrintingPolicy()); + P.setDeserialize(Deserialize); + P.dumpLookups(this, DumpDecls); +} Index: lib/AST/Stmt.cpp =================================================================== --- lib/AST/Stmt.cpp +++ lib/AST/Stmt.cpp @@ -19,6 +19,7 @@ #include "clang/AST/ExprCXX.h" #include "clang/AST/ExprObjC.h" #include "clang/AST/ExprOpenMP.h" +#include "clang/AST/ASTDumper.h" #include "clang/AST/StmtCXX.h" #include "clang/AST/StmtObjC.h" #include "clang/AST/StmtOpenMP.h" @@ -1292,3 +1293,27 @@ return false; } + +LLVM_DUMP_METHOD void Stmt::dump(SourceManager &SM) const { + dump(llvm::errs(), SM); +} + +LLVM_DUMP_METHOD void Stmt::dump(raw_ostream &OS, SourceManager &SM) const { + ASTDumper P(OS, nullptr, &SM); + P.Visit(this); +} + +LLVM_DUMP_METHOD void Stmt::dump(raw_ostream &OS) const { + ASTDumper P(OS, nullptr, nullptr); + P.Visit(this); +} + +LLVM_DUMP_METHOD void Stmt::dump() const { + ASTDumper P(llvm::errs(), nullptr, nullptr); + P.Visit(this); +} + +LLVM_DUMP_METHOD void Stmt::dumpColor() const { + ASTDumper P(llvm::errs(), nullptr, nullptr, /*ShowColors*/true); + P.Visit(this); +} Index: lib/AST/Type.cpp =================================================================== --- lib/AST/Type.cpp +++ lib/AST/Type.cpp @@ -44,6 +44,7 @@ #include "llvm/ADT/None.h" #include "llvm/ADT/SmallVector.h" #include "llvm/Support/Casting.h" +#include "clang/AST/ASTDumper.h" #include "llvm/Support/ErrorHandling.h" #include "llvm/Support/MathExtras.h" #include @@ -53,6 +54,25 @@ using namespace clang; +void QualType::dump(const char *msg) const { + if (msg) + llvm::errs() << msg << ": "; + dump(); +} + +LLVM_DUMP_METHOD void QualType::dump() const { dump(llvm::errs()); } + +LLVM_DUMP_METHOD void QualType::dump(llvm::raw_ostream &OS) const { + ASTDumper Dumper(OS, nullptr, nullptr); + Dumper.Visit(*this); +} + +LLVM_DUMP_METHOD void Type::dump() const { dump(llvm::errs()); } + +LLVM_DUMP_METHOD void Type::dump(llvm::raw_ostream &OS) const { + QualType(this, 0).dump(OS); +} + bool Qualifiers::isStrictSupersetOf(Qualifiers Other) const { return (*this != Other) && // CVR qualifiers superset