Introduce optional labels to dumpStmt

If the label is present, it is added as a child, with the statement a
child of the label.  This preserves behavior of the InitListExpr dump
output.

llvm-svn: 348717
This commit is contained in:
Stephen Kelly 2018-12-09 13:23:07 +00:00
parent 39271a195b
commit 3283535dc8
1 changed files with 15 additions and 6 deletions

View File

@ -83,7 +83,8 @@ namespace {
void setDeserialize(bool D) { Deserialize = D; }
void dumpDecl(const Decl *D);
void dumpStmt(const Stmt *S);
void dumpStmt(const Stmt *S, const char *label = nullptr);
void dumpStmtImpl(const Stmt *S);
// Utilities
void dumpType(QualType T) { NodeDumper.dumpType(T); }
@ -1711,7 +1712,18 @@ void ASTDumper::VisitBlockDecl(const BlockDecl *D) {
// Stmt dumping methods.
//===----------------------------------------------------------------------===//
void ASTDumper::dumpStmt(const Stmt *S) {
void ASTDumper::dumpStmt(const Stmt *S, const char *label) {
if (label) {
dumpChild([=] {
OS << label;
dumpStmtImpl(S);
});
} else {
dumpStmtImpl(S);
}
}
void ASTDumper::dumpStmtImpl(const Stmt *S) {
dumpChild([=] {
if (!S) {
ColorScope Color(OS, ShowColors, NullColor);
@ -1978,10 +1990,7 @@ void ASTDumper::VisitInitListExpr(const InitListExpr *ILE) {
NodeDumper.dumpBareDeclRef(Field);
}
if (auto *Filler = ILE->getArrayFiller()) {
dumpChild([=] {
OS << "array filler";
dumpStmt(Filler);
});
dumpStmt(Filler, "array filler");
}
}