From: Anders Carlsson Date: Wed, 9 Dec 2009 17:27:46 +0000 (+0000) Subject: Add DeclContext::dump. X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=2b7d8ddc746a9096f8af4bd0d8b07eae523864b5;p=clang Add DeclContext::dump. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90974 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/include/clang/AST/DeclBase.h b/include/clang/AST/DeclBase.h index e1f948fdd5..ab54ddfe04 100644 --- a/include/clang/AST/DeclBase.h +++ b/include/clang/AST/DeclBase.h @@ -1003,6 +1003,8 @@ public: static bool classof(const Name##Decl *D) { return true; } #include "clang/AST/DeclNodes.def" + void dump() const; + private: void LoadLexicalDeclsFromExternalStorage() const; void LoadVisibleDeclsFromExternalStorage() const; diff --git a/lib/AST/DeclPrinter.cpp b/lib/AST/DeclPrinter.cpp index adf7ed3b0e..ed16b33116 100644 --- a/lib/AST/DeclPrinter.cpp +++ b/lib/AST/DeclPrinter.cpp @@ -148,6 +148,17 @@ void Decl::printGroup(Decl** Begin, unsigned NumDecls, } } +void DeclContext::dump() const { + // Get the translation unit + const DeclContext *DC = this; + while (!DC->isTranslationUnit()) + DC = DC->getParent(); + + ASTContext &Ctx = cast(DC)->getASTContext(); + DeclPrinter Printer(llvm::errs(), Ctx, Ctx.PrintingPolicy, 0); + Printer.VisitDeclContext(const_cast(this), /*Indent=*/false); +} + void Decl::dump() const { print(llvm::errs()); }