Improve macro dumping to preserve semantically-relevant spelling information.

llvm-svn: 252206
This commit is contained in:
Richard Smith 2015-11-05 20:55:14 +00:00
parent 2a7a94a655
commit 85f93f34cb
1 changed files with 9 additions and 5 deletions

View File

@ -154,16 +154,20 @@ void MacroInfo::dump() const {
Out << ")";
}
bool First = true;
for (const Token &Tok : ReplacementTokens) {
Out << " ";
// Leading space is semantically meaningful in a macro definition,
// so preserve it in the dump output.
if (First || Tok.hasLeadingSpace())
Out << " ";
First = false;
if (const char *Punc = tok::getPunctuatorSpelling(Tok.getKind()))
Out << Punc;
else if (const char *Kwd = tok::getKeywordSpelling(Tok.getKind()))
Out << Kwd;
else if (Tok.is(tok::identifier))
Out << Tok.getIdentifierInfo()->getName();
else if (Tok.isLiteral() && Tok.getLiteralData())
Out << StringRef(Tok.getLiteralData(), Tok.getLength());
else if (auto *II = Tok.getIdentifierInfo())
Out << II->getName();
else
Out << Tok.getName();
}