[AST] Introduce the ASTPrinter class, and have its callbacks invoked during AST printing.

This provides useful extension points during AST printing.

Swift SVN r11338
This commit is contained in:
Argyrios Kyrtzidis
2013-12-16 01:26:36 +00:00
parent 04b98c7d67
commit 93c15bed50
15 changed files with 588 additions and 382 deletions

View File

@@ -14,6 +14,7 @@
//
//===----------------------------------------------------------------------===//
#include "swift/AST/ASTPrinter.h"
#include "swift/AST/ASTWalker.h"
#include "swift/AST/Diagnostics.h"
#include "swift/AST/LazyResolver.h"
@@ -1057,12 +1058,17 @@ bool Module::walk(ASTWalker &Walker) {
//===----------------------------------------------------------------------===//
void SourceFile::print(raw_ostream &OS, const PrintOptions &PO) {
StreamPrinter Printer(OS);
print(Printer, PO);
}
void SourceFile::print(ASTPrinter &Printer, const PrintOptions &PO) {
for (auto decl : Decls) {
if (!decl->shouldPrintInContext(PO))
continue;
decl->print(OS, PO);
OS << "\n";
decl->print(Printer, PO);
Printer << "\n";
}
}