diff options
Diffstat (limited to 'lib/Lex/MacroInfo.cpp')
| -rw-r--r-- | lib/Lex/MacroInfo.cpp | 14 | 
1 files changed, 9 insertions, 5 deletions
diff --git a/lib/Lex/MacroInfo.cpp b/lib/Lex/MacroInfo.cpp index 109b6c12b89b7..0b4292fbeae52 100644 --- a/lib/Lex/MacroInfo.cpp +++ b/lib/Lex/MacroInfo.cpp @@ -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();    }  | 
