Fix handling of comments in macros.
We now correctly format:
// Written as a macro, it is reformatted from:
#define foo(a) \
do { \
/* Initialize num to zero. */ \
int num = 10; \
/* This line ensures a is never zero. */ \
int i = a == 0 ? 1 : a; \
i = num / i; /* This division is OK. */ \
return i; \
} while (false)
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@174517 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/lib/Format/UnwrappedLineParser.cpp b/lib/Format/UnwrappedLineParser.cpp
index 5af60a4..76e912c 100644
--- a/lib/Format/UnwrappedLineParser.cpp
+++ b/lib/Format/UnwrappedLineParser.cpp
@@ -784,7 +784,7 @@
I = CommentsBeforeNextToken.begin(),
E = CommentsBeforeNextToken.end();
I != E; ++I) {
- if (I->HasUnescapedNewline && JustComments) {
+ if (I->NewlinesBefore && JustComments) {
addUnwrappedLine();
}
pushToken(*I);
@@ -798,7 +798,7 @@
void UnwrappedLineParser::nextToken() {
if (eof())
return;
- flushComments(FormatTok.HasUnescapedNewline);
+ flushComments(FormatTok.NewlinesBefore > 0);
pushToken(FormatTok);
readToken();
}
@@ -819,7 +819,7 @@
}
if (!FormatTok.Tok.is(tok::comment))
return;
- if (FormatTok.HasUnescapedNewline || FormatTok.IsFirst) {
+ if (FormatTok.NewlinesBefore > 0 || FormatTok.IsFirst) {
CommentsInCurrentLine = false;
}
if (CommentsInCurrentLine) {