diff options
author | Douglas Gregor <dgregor@apple.com> | 2009-05-30 00:08:05 +0000 |
---|---|---|
committer | Douglas Gregor <dgregor@apple.com> | 2009-05-30 00:08:05 +0000 |
commit | 4fe0c8e9c76b96e7aff21696a40dacc09d0237bc (patch) | |
tree | 1b4253035fcbb699c4110f220609fc7f37e64ca0 /lib/AST/StmtPrinter.cpp | |
parent | 9e8a72291465488e734c8aa5e20142d8b3cd981c (diff) |
Refactor and clean up the AST printer, so that it uses a DeclVisitor,
walks through DeclContexts properly, and prints more of the
information available in the AST. The functionality is still available
via -ast-print, -ast-dump, etc., and also via the new member functions
Decl::dump() and Decl::print().
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@72597 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/AST/StmtPrinter.cpp')
-rw-r--r-- | lib/AST/StmtPrinter.cpp | 17 |
1 files changed, 15 insertions, 2 deletions
diff --git a/lib/AST/StmtPrinter.cpp b/lib/AST/StmtPrinter.cpp index e6a2bad7a5..fc9fdf975d 100644 --- a/lib/AST/StmtPrinter.cpp +++ b/lib/AST/StmtPrinter.cpp @@ -816,7 +816,7 @@ void StmtPrinter::VisitConditionalOperator(ConditionalOperator *Node) { PrintExpr(Node->getLHS()); OS << " : "; } - else { // Handle GCC extention where LHS can be NULL. + else { // Handle GCC extension where LHS can be NULL. OS << " ?: "; } @@ -903,7 +903,15 @@ void StmtPrinter::VisitDesignatedInitExpr(DesignatedInitExpr *Node) { } void StmtPrinter::VisitImplicitValueInitExpr(ImplicitValueInitExpr *Node) { - OS << "/*implicit*/" << Node->getType().getAsString() << "()"; + if (Policy.CPlusPlus) + OS << "/*implicit*/" << Node->getType().getAsString(Policy) << "()"; + else { + OS << "/*implicit*/(" << Node->getType().getAsString(Policy) << ")"; + if (Node->getType()->isRecordType()) + OS << "{}"; + else + OS << 0; + } } void StmtPrinter::VisitVAArgExpr(VAArgExpr *Node) { @@ -1257,6 +1265,11 @@ void Stmt::printPretty(llvm::raw_ostream &OS, PrinterHelper* Helper, return; } + if (Policy.Dump) { + dump(); + return; + } + StmtPrinter P(OS, Helper, Policy, Indentation); P.Visit(const_cast<Stmt*>(this)); } |